[关闭]
@ghostfn1 2015-09-17T00:54:13.000000Z 字数 847 阅读 1802

学习笔记:Java中的多态

Java


Update Time:15917 周四

这段时间陆陆续续有点事,加之教程没学完,所以写笔记的事情少了些动力。 这次整理了一下。
作为一门面向对象的语言,Java也有多态(Polymorphism)特征。
何为多态?是指Java引用变量的编译时类型与运行时类型不一致的现象。

class Baseclass1
{
public int book=3;
public void test()
{
System.out.println("这是父类的方法");
}
}

public class Subclass2 extends Baseclass1
{
public String book="这是一行字";
public void test()
{
System.out.println("子类覆盖父类的方法");
}
public static void main(String[] args)
{
//多态发生
//输出3 (Baseclass1类,编译),因为对象的实例变量不具备多态性。
Baseclass1 poly1 = new Subclass2();
System.out.println(poly1.book);
}
}

Java的引用变量只能调用它编译时类型的方法,而不能调用它运行时类型的方法。可以通过强制类型转换实现转换到运行时类型:
①基本类型的转换只能在数字类型之间进行。
②引用类型之间的转换只能在具有继承关系的两个类型之间进行。

class demo{
 public … main(…)
{
int in = 5;
Object obj = "Hello";
//obj 编译时是Object类,Object与String有继承关系(为什么?),可以强制类型转换。
String objStr = (String)obj;
System.out.println(objStr);
}
//避免ClassCastException错误
Object obj2 = new Integer(5);
if (obj2 instanceof String)
{
String str = (String)obj2;
}
}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注