1常规重写:父子类间,方法名,参数项,返回值,修饰符一模一样。
例:
public class Father1 {
public void print() {
System.out.println("父类方法");
}
}
public class Son1 extends Father1{
public void print() {
System.out.println("子类方法");
}
}
public class Test1 {
public static void main(String[] args) {
Son1 son = new Son1();
son.print();
}
}
2.返回值是其子类的重写
已知B是A的子类,即B extends A
则有:
public class Father1 {
public A print() {
System.out.println("父类方法");
return null;
}
}
public class Son1 extends Father1{
public B print() {
System.out.println("子类方法");
return null;
}
}
public class Test1 {
public static void main(String[] args) {
Son1 son = new Son1();
son.print();
}
}
3.访问修饰符大于父类的重写
private
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
例:
public class Father1 {
void print() {
System.out.println("父类方法");
}
}
public class Son1 extends Father1{
protected void print() {
System.out.println("子类方法");
}
}
public class Test1 {
public static void main(String[] args) {
Son1 son = new Son1();
son.print();
}
}