子类继承父类
- 子类可以访问父类的非私有成员变量,非私有成员方法,构造方法不能继承。
- 子类拥有父类的所有的属性和方法:私有的通过get set直接访问 非私有的直接访问
- 子类可以加入特有的成员
- Java只支持单继承,支持多层继承
Super
只能直接访问父类 不能访问父类的父类
- *继承中父子类出现同名变量
访问父类变量 super.变量
- *继承中父子类出现同名方法
可以通过super.方法名() 调用父类的原有的再继续添加特有的
- *继承中父子类中构造方法的关系
a.在创建子类对象的时候,调用子类任何构造方法都会先执行父类的无参构造,如果父类还有父类,则先执行祖父类的无参构造。
C.super()必须放在构造方法第一行
D.子类只能调用一次父构造,如果父类有多个构造方法子类调用一个就可以。调用父类构造的目的:在创建子类对象时,父类的成员变量也会被开辟空间,这些空间也要被初始化。
E.父类手动写上了有参构造方法时不会再默认添加无参构造方法,子类继承后会报错是因为找不到父类的无参构造。
F.构造方法第一行 this() super()不能同时存在,任意选取一个保证子类构造方法调用到父类的构造方法即可。
子类的构造方法和set get:
无参构造:
添加super();
有参构造:
参数列表传递父类参数 子类特有参数
Super(父类参数);
this.子类参数=…;
Set get:
父类中已经set get 的参数父类中不必再set get 子类特有的参数 set get
This 与super:
this.成员变量 可以访问本类对象的成员变量
super.成员变量 可以访问父类对象的成员变量
this.成员方法() 可以访问本类对象的成员方法
super.成员方法() 可以访问父类对象的成员方法
方法重写:
意义:从父类继承一些方法的时候,该方法不能满足子类的需求,需要重写该方法
注意:
- 如果父类方法是私有的,则不能够进行重写,即使出现了和父类一样的方法也不是重写,因为子类看不到私有方法。
- 重写时子类方法的访问权限大于或等于父类的访问权限
- 只要子类重写了该方法(先判断是不是重写),则调用该方法时,一定执行子类的方法,因为子类重写覆盖了父类的方法。
子类与父类的方法声明必须一模一样:函数的返回值类型 函数名 参数列表都要一样
重写与重载区别:
重写:
父子类中方法一样
重载:
同一类中方法名相同参数列表不同,与返回类型无关抽象类:abstract
抽象类一定是个父类,因为抽象类时不断抽取共性需求而来的。
特点:不能创建对象,只能是子类继承后创建子类对象,除此和其他类并无区别
抽象方法:
被abstract修饰,只有方法声明没有方法主体的方法就是抽象方法
特点:
只有方法声明没有方法主体
只能必须在抽象类中
子类重写类父类的抽象方法,实现了方法主体,这就是方法实现.- 一般都有抽象方法,抽象方法没有方法体。
- 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
- 抽象方法是给子类准备的,如果子类继承了抽象类则必须重写该类的所有抽方法