方法重写(Override)
- 在子类中定义与父类同名,参数列表相同的成员方法时称为方法重写,也叫方法覆盖。
- 可以在该方法上加上@Override在编译期检查是否为方法重写。
- 如果父类中返回值是基本类型,则重写的方法返回值必须与父类的相同。
- 如果父类中的返回值为引用类型,则子类返回值类型也可以为该引用类型的子类类型。
- 子类的访问修饰符不可以小于父类。
- 子类中不能声明比父类更宽泛的异常。
注意:父类中某些内容不可以被重写
- 属性
- 静态方法(static)
- 私有方法(private)
- final方法(最终的方法)。final修饰的属性必须赋值,且不可以改变。
子类对象调用方法时,先查找子类中是否有该方法。如果子类有该方法则调用子类中的方法。如果子类中没有此方法则在其父类中找。若其父类中还没有该方法则编译错误。
接口中默认的修饰词为public,如果强制的在接口中定义default修饰的方法。实现该接口的类在重写该方法时还需用public修饰。
克隆(Clone)
如果一个类想使用Clone方法,则需要在该类中重写Clone方法。
在调用的类中抛出异常 throws CloneNotSupportedException.
接口
- 通过interface 创建接口。
- 接口不可以被实例化。(不可以被new)
- 一个类可以实现多个接口。
- 可以通过实现该接口的类来使用该接口的方法。接口中的方法默认为abstract修饰的。
- 可以用接口类型的对象来引用实现该接口的类
父类ParentClass:
public class ParentClass {
int age;
String name;
//构造方法
public ParentClass(String name,int age){
this.name=name;
this.age=age;
}
//成员方法
void show(){
System.out.println("父类中的成员方法");
System.out.println("name"+name+"\tage"+age);
}
public int showAge(){return age;}
}
子类ChildClass:
public class ChildClass extends ParentClass {
int level;
//子类继承仅有有参构造的父类,则在其所有的构造方法中都要显的调用父类中的构造方法
public ChildClass(String name ,int age,int level){
super(name,age);
this.level=level;
}
void show(){System.out.println("子类中的成员方法");}
@Override
public int showAge() {
return super.showAge();
}
}