好处和弊端:
好处:
1、维护性。
2、扩展性。
3、可以作为方法形参的数据类型,用于接收其任意的子类对象。
public static void method(Animal a) { //Animal a = new Animal();
//Animal a = new Cat();
//Animal a = new Dog();
//Animal a = new Pig();
//里边放(调用)的一般是所有子类的共性内容。
a.eat();
a.sleep();
* A:看下面程序是否有问题,如果没有,说出结果
*
class Fu {
public void show() {
System.out.println("fu show");
}
}
class Zi extends Fu {
public void show() {
System.out.println("zi show");
}
public void method() {
System.out.println("zi method");
}
}
class Test1Demo {
public static void main(String[] args) {
Fu f = new Zi();
f.method();
f.show();
}
}
* B:看下面程序是否有问题,如果没有,说出结果
*
class A {
public void show() {
show2();
}
public void show2() {
System.out.println("我");
}
}
class B extends A {
public void show() {
show2();
}
public void show2() {
System.out.println("爱");
}
}
class C extends B {
public void show() {
super.show(); //在这里调用了父类的show()方法,这里调用的是show2()
}
public void show2() {
System.out.println("你");
}
}
public class Test2DuoTai {
public static void main(String[] args) {
A a = new B(); //多态
a.show(); //编译看左,运行看右。 //"爱"
B b = new C(); //多态
b.show(); //编译看左,运行看右。 "你"
}
}