java中继承和接口
继承
有人会问,什么时候需要使用继承,符合什么是什么的情况,可以使用继承
继承用extends来继承,比如 Class A extends B
在继承时,不是父类中所有资源都是可以被继承的继承可以实现代码的重用性,方便修改代码,减少代码量
继承的特点:单根性(一个类只允许有一个父类)传递性
在子类访问父类成员时:
(1)访问父类构造方法:
使用super关键字,super代表父类对象,super();
在调用父类构造方法时,super必须是在子类构造方法中调用,并且super语句放在代码第一句
(2)访问父类属性:
super.name 但是如果父类属性是private修饰符修饰的,就需要调用父类的get方法获取属性
(2)访问父类方法:
super.print() 点后面直接调用即可
在子类实例化时:
无论子类在实例化时是默认构造方法,还是默认构造方法重载,都会“先”调用父类的无参构造方法,此时调用的方式是隐式,如果加上super(),则是显式,如果此时想要调用父类的有参构造方法,可以在子类的构造方法中用super(变量1,变量2,···)来调用有参构造方法
在子类重写父类方法时(方法重写或者方法覆盖):
当父类的方法不能满足子类需求时,可以定义同名的方法进行方法重写
重写时条件:
1.方法名相同
2.参数相同(个数和类型必须一致)
3.返回值必须相同或者是其子类
4.访问修饰符不能严于父类,如果父类是protected,子类只能是public或
者protected
方法重写和方法重载可不一样!
接口
接口解决了类不能多重继承的问题
接口用interface来定义,在接口中,定义方法只能有三种方式
接口的特性
要实现接口,需要创建实现类,用implements,比如 Class A implements 接口
在主函数中使用时,可以A a = new A(),也可以 接口 a = new 接口(),在有多个实现类时,一般采用后者,此时可以用a来调用每个实现类里面的方法!