1.对于普通的父类与子类
子类 能继承父类所有的属性和方法,不包括构造器。
子类能直接访问 从父类继承的公有方法和属性。
对于父类的私有属性,能继承,但是不能直接访问,只能通过父类 public 修饰的 get和set方法来访问。
对于父类的私有方法,不能访问。
创建子类对象时,会先执行父类的构造方法(初始化父类的成员变量和方法),而不会创建父类对象。
然后在 子类的内存区域中,super指向 子类对象中从父类继承的成员变量和方法。this指向 不仅父类可继承的成员变量和可继承的方法外,它还指向了子类的成员变量和方法。
引用的别人的说法:
在创建子类对象时,会把父类里的成员变量和方法也加载进内存(因为要加载进内存,所以要看下这些数据是怎么初始化的,所以调用了父类的构造,仅此而已,并不是去创建了父类对象),然后用this和super这两个引用来区分是父类的还是子类的,但是这个内存区域是子类的内存区域,绝不是父类的 this指向了不仅父类可继承的成员变量和可继承的方法外,它还指向了子类的成员变量和方法 而super仅仅只是指向了子类对象中从父类继承的成员变量和方法。
2.对于抽象类的构造方法的作用:
抽象类 只能被继承。
子类在创建对象时,会先调用父类的构造方法。(有显示构造就必须调用显示构造,无显示构造时,编译器会自动加上默认的无参构造。)
父类的构造方法,作用:初始化父类的成员变量。(这里也间接表明了不会创建父类对象,因为父类作为抽象类时,直接new 会编译报错的)
然后调用子类的构造方法。