1,子类只能继承父类所有非私有成员 2,子类不能继承父类的构造方法,但可以通过super去访问父类构造方法 3,子类成员变量和父类成员变量名称不一样,如果一样类似于重写,按子类处理,如果一样,就近原则 3,如果想使用本类成员变量用this.XX 父类用super.XX(this:本类对应的引用,super:父类对应的引用(父类存储空间标识)) 4,子类中所有的构造方法都会默认访问父类中的无参构造方法,因为子类会继承父类中的数据,还会使用父类中的数据 因此子类初始化前一定要先完成父类的初始化 注意:子类每一个构造方法的第一条语句默认都是:super() 5,父类没有无参构造方法,子类构造方法怎么办? 1,在父类添加无参构造方法 2,在子类中显示的使用带参super(“xxx”)去调用父类带参构造方法 3,通过this去调用本类的其他构造方法,但是子类中一定要有一个去访问了父类的构造方法,否则父类数据没法初始化 注意:this(...)/super(...)一定要出现在第一条语句上 如果不是放在第一条语句上,就可能对父类的数据进行多次初始化 举例 class Father{ public Father(String name){} } class Son extends Father{ public Son(){ super("xxx"); } public Son(String name){ super("XXX");// 方法2, this();//方法3,同时将上句注释掉 } } 6,子类方法和父类方法声明一样,怎么办? 1,先找子类中有没有这个方法,有就使用 2,再找父类中有没有这个方法,没有就报错 7,子类重写了父类的方法,但是还想用父类方法中的功能怎么办? 使用super调用父类的被重写方法 举例: class Father{ public void call(String name){ System.out.println("父类的方法") } } class Son extends Father{ public void call(String name){ super.call(name); System.out.println("子类的方法") } } 8,1,父类私有方法不能被重写,因为私有方法无法被继承 2,子类重写父类方法时,访问权限不能更低,最好一致 3,父类的静态方法,子类也必须通过静态方法重写(父类为非静态),子类也不能为静态 千言万语一句话:子类和父类保持一致 class Father{ public void call(String name){ System.out.println("父类的方法") } } class Son extends Father{ //子类不能覆盖父类方法 void call(String name){ System.out.println("子类的方法") } }