Java 简单java类多态性小🌰

[java]
package com.jasonote.classStudy;

/**
* Created by Jasonote on 2017/11/26.
* 多态性两种描述形式
* 方法的多态性:
* |- 方法的重载:同一个方法名称,会根据传入参数的类型及个数不同的
* |- 方法的覆写:同一个方法,会根据子类的不同,实现不同的功能
* 对象的多态性:指的是发生在继承关系类之中,子类和父类之间的转换
* |- 向上转型(自动完成):父类 父类对象 = 子类实例;
* |— 意义:参数统一,可以调用子类覆写后的方法体,即:同一个方法针对于不同的子类可以有不同的实现
* |- 向下转型(强制完成):子类 子类对象 = (子类)父类实例;
* |— 意义:父类要调用子类自己特殊的方法,所有的父类发生类向上转型后,只能够看到父类的方法,但看不到子类的方法
*
* 对于向下转型如果发生之前,一定要首先发生对象的向上转型,建立关系后才能向下转型
*
* 总结
* |- 尽量使用向上转型,以头一参数类型,同时只发生了向上转型之后才能发生向下转型
* |- 子类尽量不要多的扩充与父类无关的操作方法
*/
public class PolymorphicClass {
public static void main(String[] args) {
B bb = new B();
bb.print();

//向上转型
A a = new B();
a.print();

//向下转型
B b = (B) a;
b.print();
b.funB();

//instanceof
A A = new A();
B B = new B();
System.out.println(A instanceof B);
System.out.println(B instanceof A);

//
// A aa = new A();
// B bb2 = (B) aa;
// bb2.print();//Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B

}
}

class A {
public void print() {
System.out.println("A print");
}
}

class B extends A {
public void print() {
System.out.println("B print");
}

public void funB() {
System.out.println("B funB");
}
}

[/java]

Jason.wang

When you find your talent can't afford to be ambitious, be quiet and study !

You may also like...