标题很多java基础都忘记了,写个博客来记录复习一下。
java继承
1. 子类继承父类的方法和属性
2. 子类可以重写父类的方法
3. 实例化子类对象时,父类的无参构造方法将被自动调用,但有参构造方法并不能自动调用,只能依赖于super关键字显示地调用父类的构造方法。
4.一个类如果显示的定义了带参构造而没有无参构造,则无参构造则会被覆盖,这样子类继承时会报错。所以我们在给类添加无参构造方法时,最好再显示的写一个无参构造方法。
public class Father{
private String fatherName;
//无参构造
public Father(){
System.out.print("执行父构造方法");
}
//带参构造
public Father(String name){
this.fatherName = name;
}
protected Father doIt(){
System.out.print("父类成员方法");
}
//setter getter...
}
class Son extends Father{
public Son(){
super();//即使不显示的调用父类构造,实例子类对象时也会默认调用
System.out.print("执行子类构造方法");
}
//重写父类的doIt方法:修饰符、返回值类型、方法体
@Override
public Son doIt(){
System.ou.print("子类重写父类方法");
}
}
方法重写
方法重写或者叫覆盖就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员变量的返回值类型
总结:
1. 保留方法名称
2. 重写方法体
3. 更改访问权限
4. 更改返回值类型
方法的五个组成部分:访问修饰符、返回值类型、方法名、参数列表、方法体。
也就是方法重写,除了参数列表不能修改之外,其余四个都可以修改。但是需要注意的是:
一、重写方法的修饰权限的话,只能从小的范围修改到大的范围,例如Object中的**protected 修饰的clone()**方法,如果我们希望自定义类(实现了Cloneable接口)可以灵活使用它的话,就需要重写扩大clone()方法的访问权限(也可以对其进行封装然后开放访问方法)。
二、重写父类方法的返回值类型的话,新的返回值类型必须是原方法返回值类型的子类类型,如上述示例代码中被重写的doIt方法。