java中多态的小例子
来源:互联网 发布:域名查询 美橙互联 编辑:程序博客网 时间:2024/06/05 04:03
class BaseClass
{
public int book = 6;
public void base(){
System.out.println("父类的普通方法");
}
public void test(){
System.out.println("父类的被覆盖的方法");
}
}
class SubClass extends BaseClass{
public String book = "Thingking in Java";
public void test(){
System.out.println("子类的覆盖父类的方法");
}
public void sub(){
System.out.println("子类的普通方法");
}
}
public class SubClassDemo{
public static void main(String[] args)
{
BaseClass bc = new BaseClass();
bc.base();
bc.test();
SubClass sc = new SubClass();
sc.base();
sc.test();
BaseClass ploymophicBc = new SubClass();//向上转型
System.out.println(ploymophicBc.book);//成员变量编译运行都看左边
ploymophicBc.base();//成员函数编译看左边,运行看右边
ploymophicBc.test();
//ploymophicBc.sub(); 编译会不通过
}
}
运行结果:
父类的普通方法
父类的被覆盖的方法
父类的被覆盖的方法
父类的普通方法
子类的覆盖父类的方法
6
父类的普通方法
子类的覆盖父类的方法
ploymophicBc比较特殊,在编译时类型是Baseclass,运行时类型是Subclass,当调用该引用变量的test()方法时,实际上执行的是Subclass中覆盖后的test()方法。
引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法。
与方法是不同的是,对象的实例变量不具备多态性System.out.println(ploymophicBc.book);并不是输出Subclass里定义的实例变量。
老毕Java视频中这样总结的:
在多态中成员函数的特点:编译看左,运行看右
在编译时:参阅引用型变量所属的类中是否有调用的方法。如果有,则编译通过。没有则不通过。
在运行时:参阅对象所属的类中是否有调用的方法。
在多态中成员变量的特点:全都看左
无论编译还是运行,都参看左边(引用型变量所属的类)
0 0
- java中多态的小例子
- java反射的小例子
- xmlrpc的java小例子
- Java-LockSupport的小例子
- Java-CountDownLatch的小例子
- java中文件操作的小例子
- JAVA动态代理实现的小例子
- java继承的一个小例子
- java 线程死锁的小例子
- Java递归算法的小例子
- Java实现串口通信的小例子
- 一个简单的 java socket 小例子
- 一个java执行exe的小例子
- java.nio的一个小例子
- Java反射编程的小例子
- Java解释XML文件的小例子
- Java 访问MySQL的小例子
- java button tooltip的一个小例子
- 5.2-1
- C++面试宝典(整理版)2
- linux gdb调试笔记
- HDU ACM 1084 What Is Your Grade?
- 安卓应用商店遭遇的创新窘境
- java中多态的小例子
- [堆] HDU4006 The kth great number
- Android NDK Cocos2dx 3.4 Label中文显示
- iOS 实现后台运行
- 关于在freemarker模板中遍历数据模型List<JavaBean>的经验
- Mysql 压力测试工具super-smack的安装
- Dynamics CRM 2015Online Update1 new feature之表单页Tabs切换
- 鉴别一串字符串中只包含数字
- hdu 1394 (线段树推荐模板)