java的多态
来源:互联网 发布:http dev.mysql.com 编辑:程序博客网 时间:2024/05/21 06:13
多态;
引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行时执行它运行时类型所具有的方法。
因此,编写java代码时,引用变量只能调用声明该变量时所用类里包含的方法。
例如;
通过Object p = new Person()代码定义一个变量p,则这个p只能调用Object类的方法,而不能调用Person类里定义的方法。
——————————————————————————————————————————————————————————————————
多态示例程序:
class BaseClass{ public int book = 6; public void Base(){ System.out.println("父类的普通方法"); } public void test(){ System.out.println("父类被覆盖的方法"); }}public class SubClass extends BaseClass{ //重新定义一个book实例变量隐藏父类的book实例变量 public String book = "java开发" ; public void test(){ System.out.println("子类覆盖父类的方法"); } public void sub(){ System.out.println("子类的普通方法"); } public static void main(String[] args) { //下面编译时类型和运行时类型完全一样,因此不存在多态 BaseClass bc = new BaseClass(); System.out.println(bc.book);// 输出6 //下面两次调用将执行BaseClass的方法 bc.Base(); bc.test(); //下面编译时和运行时类型完全一样,因此也不存在多态 SubClass sc =new SubClass(); System.out.println(sc.book);//输出java开发 //下面将执行从父类继承来的方法 sc.Base(); sc.test(); //******************************* //下面编译时和运行时类型不同,将发生多态 BaseClass ploymophicBc = new SubClass(); System.out.println( ploymophicBc.book);// 输出6,说明了访问的是父类对象的实例变量 //下面将执行从父类继承的得到的base()方法 ploymophicBc.Base(); //下面将调用当前类的方法 ploymophicBc.test(); //因为 ploymophicBc的编译类型是BaseClass,而BaseClass没有提供sub方法,所以下面代码在编译时会出错. // ploymophicBc.sub(); }}
0 0
- Java 的多态
- JAVA的多态
- java的多态
- java的多态
- Java的多态
- JAVA的多态
- Java的多态
- Java的多态
- Java的多态
- java的多态
- JAVA的多态
- Java的多态
- java的多态
- Java 的多态
- Java的多态
- java的多态
- Java的多态
- java的多态
- Android Camera架构分析
- 学习空间数据
- 英文版Ubuntu Firefox中文乱码解决方案
- 编译出现: Code Sign error: Provisioning profile does not match bundle identifier:
- 组播简介
- java的多态
- R+ODPS
- Android Camera 系统架构源码分析
- ios8调用相机报警告: Snapshotting a view that has not been rendered results in an empty snapshot?
- 引用变量的强制类型转换:
- 数据结构-循环和递归比较(31)
- IMX6QDL Android5.0 Kernel3.10 无法挂载system文件系统
- php基础之错误处理
- Devexpress DropDownButton 用法