Java多态小练习
2016-01-13 23:37
330 查看
一、
父类:
子类:
运行结果:
Son:print()
小结:
父类 对象 = new 子类() 是常用的写法,这个时候对象调用的方法是子类的方法。
但是为什么不直接写 子类 对象 = new 子类()呢?请看第二节
二、
结果:出错不能编译运行,obj对象不能调用print2()方法。
小结:
由于obj是Father类的,所以obj只能调用Father类中已定义的方法。如果子类重写了父类的方法,则调用的是子类重写后的方法,如第一节。
三、
父类不变,子类更改如下:
运行结果:
Son:print()
小结:
obj在调用print2()的时候,传入的obj对象是Son类型的,因此调用的print()方法是Son类的print()方法。
父类:
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树