java中多态的例子_java中的多态案例
多態性實際上有兩種:
1.方法的多態性:
1.1方法重載:相同的方法名,會根據傳入的參數的類型和個數不同執行不同的方法
1.2方法覆寫:同一個方法名稱,會根據子類的不同實現不同的功能
2.對象的多態性:指的是發生在類的繼承中,子類和父類之間相互轉換
1.1向上轉型(自動完成):父類 父類對象 = 子類實例
2.2向下轉型:子類 子類對象 =(父類)父類實例;
由于父類可以有多個子類,而一個子類所擁有的父類個數不會太多,向上轉型不會出現編譯錯誤,而向上轉型有可能出現編譯時候的錯誤
class A{
public void print(){
System.out.println("A中的方法");
}
}
class B extends A{
public void print(){
System.out.println("B中的方法");
}
}
public class Test{
public static void main(String args[]){
A a =new A();
B b = (B) a;
b.print();
}
}
/*
Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B
at Test.main(Test.java:14)
*/
以上的代碼出現了類轉換的異常,指的是兩個兩個沒有關系的類對象發生強制的向下轉型所帶來的異常,
instanceof關鍵字的使用;該關鍵字主要是判斷某個對象是否是一個類的實例:
對象 instanceof 類//返回的是boolean
classA{public voidprint(){
System.out.println("A中的方法");
}
}class B extendsA{public voidprint(){
System.out.println("B中的方法");
}
}public classTest{public static voidmain(String args[]){
A a= newB();if(a instanceofB){
B b=(B)b;
}
b.print();
}
}
注意點:向下轉型發生之前,一定要先發生對象的向上轉型
范例:向上轉型實例
classA{public voidprint(){
System.out.println("A中的方法");
}
}class B extendsA{public voidprint(){
System.out.println("B中的方法");
}
}public classTest{public static voidmain(String args[]){
A a= new B();//向上轉型
a.print();//B中的方法
}
}
總結
以上是生活随笔為你收集整理的java中多态的例子_java中的多态案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java程序设计教程实验报告_java程
- 下一篇: if转java_java 使用if将St