interface A { void ff();
}class B implements A { public void ff() {
System.out.println("sss");
}
}class D {
public static void main(String[] args) {
A a = new B(); a.ff();//此处调用的接口A 的方法,还是实现类B 的方法;
}
}
}class B implements A { public void ff() {
System.out.println("sss");
}
}class D {
public static void main(String[] args) {
A a = new B(); a.ff();//此处调用的接口A 的方法,还是实现类B 的方法;
}
}
{
public void print(String str)
{
System.out.println("答:我是老子");
}
}
public class Son extends Father { public Son() {
super();
// TODO 自动生成构造函数存根
}
public void print(String str)
{
System.out.println(str);
System.out.println("答:我是儿子");
}
public static void main(String args[])
{
Father who= new Son();
who.print("问:我是谁?");
}}输出结果:
问:我是谁?
答:我是儿子
这就是方法里的重写,只不过你的例子是重写了接口中的方法,我这个例子是重写了父类中的方法。
你例子中的A a = new B();中的a和我这个例子中的Father who= new Son();的 who叫上转型对象,是java多态的一种方式。你可以再写一个Daughter类继承father,并重写pint方法。Father who = new Daughter(); who.print();将执行女儿类中的print方法。
儿子,女儿都是父亲的,但具有不同的特征。这就是java多态的好处
父类 对象 = new 子类();这里的对象就是上转型对象。所谓的父类声明子类实现。(接口也类似)
上转型对象特征:
1.子类重写了父类的方法执行子类的。
2.子类中有,父类中没有的。上转型对象没法调用。
。好像还有记不太清了