一.多型
形式1) 父類做形參,子類做實參
public void feed(父類名 物件名){
物件名.方法名();
}
實體化類的物件名.feed(子類物件名)
形式2.) 父類做參考型別,子類實體化 (向上轉型 自動型別轉換)
父類名 物件名 = new 子類名();
形式3.) 父類作為方法回傳值,子類實體化 自動型別轉換)
二.重寫方法
1)位置: 子類和父類有同名的方法
2). 方法名相同,回傳型別和修飾符相同,方法體不同
三.instanceof 作用及使用
子類轉換父類:向上轉型 自動轉換
父類轉換子類: instanceof (向下轉型 強制轉換)
總結:
多型可以減少類中代碼量, 可以提高代碼的可擴展性和可維護性
向上轉型一- 子類轉換為父類
自動進行型別轉換
向下轉型一 父類轉換為子類
結合instanceof運算子進行強制型別轉換
/*
* 代碼板塊
*/
/*
* 父類Pet
* */
public class Pet {
public void eat(){
System.out.println("Pet正在吃東西");
}
}
/*
* 子類Dog
* */
public class Dog extends Pet {
public void eat(){
System.out.println("狗正在吃狗糧");
}
//主人和寵物玩的行為
public void catchdisk(){
System.out.println("狗狗玩飛盤");
}
}
/*
* 子類Penugin
* */
public class Penugin extends Pet {
public void eat(){
System.out.println("企鵝正在吃魚");
}
//主人和寵物玩的行為
public void swiming(){
System.out.println("企鵝在游泳");
}
}
/*
* 主人類Master
* */
public class Master {
//多型形式1: 父類做形參,子類做實參
public void feed(Pet pet){ //用父類作為形參 接收子類的實參
pet.eat();
}
//領養寵物
//多型形式3: 父類作為方法回傳值,子類實體化 (型別自動轉換)
public Pet getpet(int id){
Pet pet=null;
if (id==1){
pet=new Dog();
}else if (id==2){
pet = new Penugin();
}
return pet;
}
//主人和寵物玩的行為
public void play(Pet pet){
if ( pet instanceof Dog){ //如果父類物件是Dog類 就轉換
Dog dog = (Dog)pet; //向下轉型
dog.catchdisk();
}else if (pet instanceof Penugin){ //如果父類物件是Penugin類 就轉換
Penugin penugin =(Penugin)pet;
penugin.swiming();
}
}
}
import java.util.Scanner;
/*
* 測驗類Test
* */
public class Test {
public static void main(String[] args){
//多型形式1: 父類做形參,子類做實參
Pet pet = new Pet();
Dog dog = new Dog();
Penugin penugin = new Penugin();
Master ms = new Master();
ms.feed(pet); //將Penugin作為實際引數傳過去
ms.feed(penugin); //將Penugin作為實際引數傳過去
ms.feed(dog); //將Dog作為實際引數傳過去
//多型形式2: 父類做參考型別 子類實體化
Pet pet2 = new Dog(); //父類轉換子類(向上轉型 自動轉換)
pet2.eat();
//領養寵物方法
//多型形式3: 父類作為方法回傳值,子類實體化 (型別自動轉換)
System.out.println("請選擇你要領養的寵物:1.狗狗 2.企鵝");
Scanner input = new Scanner(System.in);
int cw=input.nextInt();
Master dx = new Master();
Pet pets = dx.getpet(cw);
pets.eat();
dx.play(dog);
dx.play(penugin);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131975.html
標籤:非技術區
下一篇:大佬們求幫幫忙
