1.继承
继承定义:
就是将多个相同的成员变量和方法抽取到一个类中,其他类通过继承该类获取这些成员的方式,叫继承
继承实现:
继承的好处:
1.提高代码的复用性
2.提高代码的易维护性
坏处:
增加了代码的耦合度
格式:
lass 子类extends 父类{}
特点:
1.只能单继承,不支持多重继承
2.但可以多层继承
注意:子类只能继承父类的成员变量和成员方法,不能继承构造方法,可以通过super访问
2.重写(Override)
定义:
就是子类重新定义父类的方法
前提条件:
1.重写的方法,必须和父类的方法具有相同的返回类型,参数列表,方法名称
2.重写的方法,访问权限不能低于父类的访问权限
3.只能重写非static的方法
4.重写方法抛出异常,不能大于负累抛出的异常
5.重写可以使用@Override注解进行校验。
面试题:
重写(Override)和重载(Overload)的区别
1.重写是要有继承,因为要重写父类的方法
子类覆盖父类相同的方法,实现逻辑不通
2.重载实在一个类完成的,
方法名一样
参数类型或个数不一样
跟返回值无关
3.super关键字
在java类中使用Super来调用父类中的指定操作:
1.super可用于访问父类中定义的属性
2.super可用于调用父类中定义的成员方法
3.super可用于在子类构造方法中调用父类的构造器
这时super必须放在首行
注:
1.尤其当子父类出现同名成员时,可以用super进行区分
2.super的追漱不仅限于直接父类,直到Object(Object类是所有类的符类)
3.super和this用法相像,this代表本类对象的引用,super代表父类内存空间的标识
super和this的区别:
访问成员变量
this.成员变量 访问本类的
supper.成员变量 访问父类的
访问成员方法:
this.成员方法() 访问本类的
supper.成员方法() 访问父类的
访问构造方法:
this() 访问本类无参构造方法
supper() 访问父类无参构造方法
this(……) 访问本类有参构造方法
supper(……) 访问父类有参构造方法
super和this不能同时访问构造方法
4.访问权限控制
修饰符 类内部 同一个包 不同包子类 任何地方
private yes 不 不 不
Default(不写) yes yes 不 不
protected yes yes yes 不
public yes yes yes yes
注意:类的权限修饰符:public和默认
5.继承中各个成员之间的关系
成员变量
先在子类局部方法里找,局部方法找不到找成员变量,找不到再去父类成员变量找,还找不到就报错
成员方法
现在子类找,子类里找不到再去父类找,还找不到就报错
构造方法(创建对象 初始化)
1.子类在实例化的时候会先访问父类的无参构造方法
2.如果父类没有无参构造方法,那就需要子类通过super关键字调用父类的有参构造方法
6.继承中子类实例化过程
例如:
class Fu{
String name;
public Fu(){
}
}
class Zi extends Fu{
int age;
public Zi(int age){
this.age=age;
}
}
new Zi();
执行过程:
1.调用子类有参构造方法public Zi(int age)
2.判断子类是否有父类,如果有,先对父类的成员变量初始化
3.子类有参构造方法,又会隐式的调用父类的无参构造方法
4.初始化自己的成员变量
5.执行自己的有参构造方法
继承定义:
就是将多个相同的成员变量和方法抽取到一个类中,其他类通过继承该类获取这些成员的方式,叫继承
继承实现:
继承的好处:
1.提高代码的复用性
2.提高代码的易维护性
坏处:
增加了代码的耦合度
格式:
lass 子类extends 父类{}
特点:
1.只能单继承,不支持多重继承
2.但可以多层继承
注意:子类只能继承父类的成员变量和成员方法,不能继承构造方法,可以通过super访问
2.重写(Override)
定义:
就是子类重新定义父类的方法
前提条件:
1.重写的方法,必须和父类的方法具有相同的返回类型,参数列表,方法名称
2.重写的方法,访问权限不能低于父类的访问权限
3.只能重写非static的方法
4.重写方法抛出异常,不能大于负累抛出的异常
5.重写可以使用@Override注解进行校验。
面试题:
重写(Override)和重载(Overload)的区别
1.重写是要有继承,因为要重写父类的方法
子类覆盖父类相同的方法,实现逻辑不通
2.重载实在一个类完成的,
方法名一样
参数类型或个数不一样
跟返回值无关
3.super关键字
在java类中使用Super来调用父类中的指定操作:
1.super可用于访问父类中定义的属性
2.super可用于调用父类中定义的成员方法
3.super可用于在子类构造方法中调用父类的构造器
这时super必须放在首行
注:
1.尤其当子父类出现同名成员时,可以用super进行区分
2.super的追漱不仅限于直接父类,直到Object(Object类是所有类的符类)
3.super和this用法相像,this代表本类对象的引用,super代表父类内存空间的标识
super和this的区别:
访问成员变量
this.成员变量 访问本类的
supper.成员变量 访问父类的
访问成员方法:
this.成员方法() 访问本类的
supper.成员方法() 访问父类的
访问构造方法:
this() 访问本类无参构造方法
supper() 访问父类无参构造方法
this(……) 访问本类有参构造方法
supper(……) 访问父类有参构造方法
super和this不能同时访问构造方法
4.访问权限控制
修饰符 类内部 同一个包 不同包子类 任何地方
private yes 不 不 不
Default(不写) yes yes 不 不
protected yes yes yes 不
public yes yes yes yes
注意:类的权限修饰符:public和默认
5.继承中各个成员之间的关系
成员变量
先在子类局部方法里找,局部方法找不到找成员变量,找不到再去父类成员变量找,还找不到就报错
成员方法
现在子类找,子类里找不到再去父类找,还找不到就报错
构造方法(创建对象 初始化)
1.子类在实例化的时候会先访问父类的无参构造方法
2.如果父类没有无参构造方法,那就需要子类通过super关键字调用父类的有参构造方法
6.继承中子类实例化过程
例如:
class Fu{
String name;
public Fu(){
}
}
class Zi extends Fu{
int age;
public Zi(int age){
this.age=age;
}
}
new Zi();
执行过程:
1.调用子类有参构造方法public Zi(int age)
2.判断子类是否有父类,如果有,先对父类的成员变量初始化
3.子类有参构造方法,又会隐式的调用父类的无参构造方法
4.初始化自己的成员变量
5.执行自己的有参构造方法