JAVA的多态
来源:互联网 发布:例程单片机 编辑:程序博客网 时间:2024/05/18 01:08
1.Java引用变量有两个类型:一个是编译时的类型,一个是运行时的类型。编译时的类型由声明该变量时使用的类型所决定,而运行时的类型由实际赋给该变量的对象所决定。如果编译时类型和运行时类型不一致,就会出现所谓的多态(看成向上转型???)
class BaseClass {public int book=6;public void base(){System.out.println("父类普通方法");}public void test(){System.out.println("父类被覆盖的方法");}}public class SubClass extends BaseClass{public String book="fuck";public void test(){System.out.println("子类覆盖父类的方法");}public void sub(){System.out.println("子类普通方法");}public static void main(String[] args){//编译时类型=BaseClass,运行时类型=SubClass实现多态BaseClass bc=new SubClass();System.out.println(bc.book);bc.base();bc.test();}}
2.该引用变量bc,在编译阶段只能调用编译时类型所具有的方法,而运行时则执行它运行时类型所具有的方法,所以引用变量只能调用声明该变量时所用类里包含的方法。(bc.sub()将报一个错误,编译时会提示找不到符号sub())
3.与方法不同,变量并不具有多态性,所以book输出的是6,输出的是父类中的实例变量
4.通过引用变量来访问实例属性,系统总是试图访问它编译时类所定义的属性
5.JAVA可以很好的实现向上转型(将一个子类的实例赋给父类的引用变量),但是如果想实现向下转型(将一个父类的实例赋给子类的引用变量)就需要进行强制转型(type)variable
6.在强制转型之前,一般需要通过instanceof的判断。instanceof的前一个操作符一般是引用型变量,后一个操作符一般是一个类。它用于判断前面的对象是否是后面类或子类的实例
public class instance {public static void main(String[] args) throws Exception{//Object是String的父类Object hello="hello"; if(hello instanceof String){String obj=(String)hello;System.out.println(obj);}}}
0 0
- Java 的多态
- JAVA的多态
- java的多态
- java的多态
- Java的多态
- JAVA的多态
- Java的多态
- Java的多态
- Java的多态
- java的多态
- JAVA的多态
- Java的多态
- java的多态
- Java 的多态
- Java的多态
- java的多态
- Java的多态
- java的多态
- Flash Builder 无法概要分析 原因查找
- AS3与数据结构 转载
- as3位运算
- Starling外部资源管理
- 不依赖于Flex Framework的绑定(flight-framework)
- JAVA的多态
- 关于android的apk版本升级的一些建议
- as3实现服务器的putLong()和getLong()
- AS3常用三方类库(二):TweenMax(转)
- Flash图片的内存计算公式
- as3:sprite作为容器使用时,最好不要指定width,height
- nginx如何统一处理监听套接字
- 在windows安装配置Git开发环境
- 从程序员到项目经理