class Super{
public static void smethod(){
System.out.println("super smethod!");
}
public static void stest(){
System.out.println("super test!");
}
public void test(){
System.out.println("super test!");
}
public void test(int i){
System.out.println("super test i:"+i);
}
}
class Sub extends Super{
//重写或覆盖父类方法,
//不管使用父类引用还是子类引用调用test()
//都是调用此方法
public void test(){
System.out.println("sub test!");
}
//重载test方法
public void test(String info){
System.out.println(info);
}
//隐藏父类stest方法
//使用子类引用调用stest(),则调用这里
//父类引用调用stest(),则调用父类方法;
public static void stest(){
System.out.println("sub test!");
}
}
public class SynchronizedTest {
public static void main(String[] args) {
Sub sub = new Sub();
sub.test();//重写或覆盖,调用子类实现
Super super1 = sub;
super1.test();//重写或覆盖,调用子类实现
//重载
sub.test(100);
sub.test("overload");
//sub.stest();
sub.stest(); //子类中隐藏,依赖于引用类型,只能调用子类实现;
super1.stest();//子类中隐藏,依赖于引用类型,调用父类实现;
sub.smethod();//没有隐藏,调用父类实现;
super1.smethod();//没有隐藏,调用父类实现;
}
}
java总的重载(overload)、重写或覆盖(override)和隐藏分析;
本文转载:CSDN博客