• 面向对象--继承。


    定义:

    继承代表了一种is-a关系,如果说A是B,也就可以说A继承了B
    父类更加通用
    子类更加具体
    优点:提高代码的复用性。

    继承实现:

    java中实现继承使用extends关键字

    [修饰符] class 类名 extends 父类{

    }

    子类可以继承父类的非私有的属性和方法。
    子类不能继承父类的构造方法。
    java中继承是属于单继承,一个类只能有一个父类,但是一个父类可以有多个子类。
    C++中可以存在多继承,java可以通过接口实现多继承。

    方法重写:

    方法的重写(override):一般发生在父子之间,子类重写的方法应该满足以下条件
    * 1.子类的方法名,返回值类型,参数列表必须与父类相同
    * 2.子类的修饰符范围>=父类的修饰符范围
    * 修饰符范围:public>protected>默认>private
    * 重载:方法名相同,参数列表不同
    * 重写(override)和重载(overload)区别:
    * 1.重写一般发生在父子之间,重载一般在同一个类中。
    * 2.重写要求方法名,返回值类型,参数列表必须与父类相同,并且修饰符范围大于等于父类方法的修饰符范围。
    * 重载方法名相同,参数列表不同,与返回值类型及修饰符无关。
    * 3.作用不同。
    * 重载主要是为了提供一种同名方法不同参数的能力(可以让一个类用于多个同名的方法)
    * 重写主要是为了结合多态使用,提高程序扩展性和可维护性。
    *
    * 注意:一旦子类重写了父类中的方法,创建子类实例后,调用子类重写后的方法。

    object类:

    java.lang.Object类:所有类的基类
    *一个类如果没有显式使用extends继承其他类,这个类继承了Object类,在任何类的对象中使用Object中的方法
    *public class Student{
    *}
    *public class Student extends Object{
    *}
    *常用的方法:
    * getClass() 返回此 Object 的运行时类。主要用于反射机制。
    * toString() 返回该对象的字符串表示。如果使用System.out.println(stu);默认调用stu.toString()
    * cn.zzsxt.oop6.Student@26ffd553==》
    * cn.aaaaa.oop6.Student(包名.类名)+@+16进制表示的hashcode码
    * toString()方法经常在子类中重写

    父子类中代码的执行过程:

    * 父类和子类中代码的执行顺序
    * 静态代码块在使用类时执行。
    * 普通代码块在创建对象时执行。
    * 父类的静态代码块>子类静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
    * 在创建子类时,先调用父类的构造方法先创建父类的实例,在创建子类的实例。

      

    public class Car {
    String name="汽车";

    public void run(){
    System.out.println("我是汽车,我能跑!");
    }
    }

     

    public class Bmw extends Car {
    String name="宝马X7";

    public void run(){
    System.out.println("我是"+name+"我很帅气,加油就跑!");
    }
    }

    public class Benz extends Car {
    String name="大奔S500";

    public void run(){
    System.out.println("我是"+name+",我身份显贵,加油就跑!");
    }
    }

    public class Driver {
    public void drive(Car c){
    System.out.println("我是A照驾驶员,我要开车..");
    c.run();
    }


    public static void main(String[] args) {
    Driver driver = new Driver();
    driver.drive(new Benz());
    driver.drive(new Bmw());
    System.out.println("*********************");
    //向上转型:
    Car c = new Benz();
    System.out.println(c.name);//访问时父类的属性
    c.run();//调用子类重写后的方法

    }
    }

  • 相关阅读:
    Windows Phone 在读取网络图片之前先显示默认图片
    ios开发 点击文本(TextField)输入的时候向上推以及输入之后恢复的动画
    51nod 1019 逆序数
    hdu 5455 Fang Fang
    51nod 1027 大数乘法
    51nod 1006 最长公共子序列Lcs
    51nod 1066 Bash游戏
    51nod 1069 Nim游戏
    51nod 1049 最大子段和
    51nod 1072 威佐夫游戏
  • 原文地址:https://www.cnblogs.com/benpaozhimeng/p/6978514.html
Copyright © 2020-2023  润新知