• java中类的继承


    我们都知道java的四大特性:抽象、继承、封装、多态;

    那么关于继承有哪些特性呢?下面看具体实例:

    (1)

    public class Person {  

    public  int a=2;  

    public  void see(int a){   

    System.out.println(a);

     }

    }

    public class Hello extends Person {

    public int a = 3;

    public void see(int s){

     System.out.println("11");

    }  public static void main(String[] args){   

    Person a1 = new Person();   

    System.out.println(a1.a);  //a1.a的值由声明类型决定,所以值是2

    a1.see(1);  //调用的方法由引用对象的类型决定,这里对象是子类的对象,所以值是11,总结:属性绑定到类型,方法绑定到对象!

    }  

    }

    (1)继承成员变量

    当子类继承某个类时,子类就可以使用这个类的成员变量,但不是完全继承这个类中所有的成员变量,具体原则如下:

    <1>子类能够继承父类的public、protected、default 修饰成员变量,不能继承private修饰的成员变量

    <2>对于子类可以继承父类的成员变量,如果子类出现了同名的成员变量,那么子类就会屏蔽掉父类的成员变量,如果想调用父类的成员变量,就需要用到super关键字

    (2)继承方法

    当子类继承某个类时,子类就可以使用这个类的方法,但不是完全继承这个类中所有的方法,具体原则如下:

    <1>子类能够继承父类的public、protected、default 修饰方法,不能继承private修饰的方法

    <2>对于子类可以继承父类的方法,如果子类出现了同名的方法,那么子类就会屏覆盖父类的成员变量,如果想调用父类的成员变量,就需要用到super关键字,子类重写的方法的修饰符权限要大于父类的方法访问权限

    总结:
    程序运行时(一个类中),会第一时间加载运行静态代码块,一旦创建对象,就会执行非静态代码块以及无参构造方法。 而在继承中,程序运行时 会先加载父类中静态代码块 然后加载本身静态代码块,一旦创建对象(运用子类构造方法创建),就会调用 父类非静态代码块,父类构造方法,然后就是本身 非静态代码块,本身构造方法

    抽象类和接口的区别:

    抽象类只能被继承,而且只能被单继承,接口需要被实现,而且可以多实现

    抽象类中可以有非抽象方法也可以没有抽象方法(抽象类中可以没有抽象方法,但是有抽象方法的类肯定是抽象类),接口中全部都是抽象方法

    抽象类的成员修饰符可以自己定义,接口中不能是private

    ----

    继承:在方法覆盖时注意2点:

    1、覆盖的方法修饰符权限不能小于比父类的方法权限

    2、方法必须是全部静态或全部非静态

     多态的弊端:父类的引用指向子类的对象,虽然提高了扩展性,但是只能方法父类具有的方法,不可以访问子类特有的方法

    多态在成员变量和成员方法中的体现:

    成员变量看编译运行左边

    成员函数看编译看左边 运行看右边--覆盖

    静态成员函数编译运行看左边--静态方法不属于对象 属于类

    --也就是说静态函数和成员变量,静态成员变量原理一样

  • 相关阅读:
    filter过滤器(转载)
    匿名函数 lambda
    偏函数(转载)
    python中的多重继承和Mixin(转载)
    __slot__
    virtual hust 2013.6.21 NEFU 挑战编程----数论 E
    virtual hust 2013.6.21 NEFU 挑战编程----数论 D
    virtual hust 2013.6.21 NEFU 挑战编程----数论 C
    virtual hust 2013.6.21 NEFU 挑战编程----数论 B
    virtual hust 2013.6.21 NEFU 挑战编程----数论 A
  • 原文地址:https://www.cnblogs.com/muliu/p/5504216.html
Copyright © 2020-2023  润新知