您的位置:首页 > 编程语言 > Java开发

Java多态小练习

2016-01-13 23:37 330 查看
一、

父类:

public class Father {

void print() {
System.out.println("Father:print()");
}
}


子类:

public class Son extends Father {
public void print() {
System.out.println("Son:print()");
}

public static void main(String[] args) {
Father obj = new Son();//这里用obj是Father类型的,但是new 的对象是Son对象,调用的到底是父类的print()方法还是子类的print()方法呢?
obj.print();
}
}


运行结果:

Son:print()

小结:

父类 对象 = new 子类() 是常用的写法,这个时候对象调用的方法是子类的方法。

但是为什么不直接写 子类 对象 = new 子类()呢?请看第二节

二、

public class Son extends Father {
public void print() {
System.out.println("Son:print()");
}

//加了一个方法print2()
public void print2() {
System.out.println("Son:print2");
}
public static void main(String[] args) {
Father obj = new Son();
obj.print2();//调用pirnt2(),出错
}
}


结果:出错不能编译运行,obj对象不能调用print2()方法。

小结:

由于obj是Father类的,所以obj只能调用Father类中已定义的方法。如果子类重写了父类的方法,则调用的是子类重写后的方法,如第一节。

三、

父类不变,子类更改如下:

public class Son extends Father {
public void print() {
System.out.println("Son:print()");
}

public void print2(Father obj) {//传入参数
obj.print();
}
public static void main(String[] args) {
Son obj = new Son();//Obj为Son类型
obj.print2(obj);
}
}


运行结果:

Son:print()

小结:

obj在调用print2()的时候,传入的obj对象是Son类型的,因此调用的print()方法是Son类的print()方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多态