JAVA入墳11 封裝 集成 重寫 魔鬼多型!
我不知道前邊的8 9 10去哪了XD
封裝:是指隱藏物件的屬性和實作細節,僅對外提供公共訪問方式,
好處:
將變化隔離、便于使用、提高重用性、提高安全性
封裝原則:
將不需要對外提供的內容都隱藏起來、把屬性都隱藏,提供公共方法對其訪問,
private 關鍵字
是一個權限修飾符,
用于修飾成員(成員變數和成員函式)
被私有化的成員只在本類中有效,
常用之一:
將成員變數私有化,對外提供對應的set ,get方法對其進行訪問,提高對資料訪問的安全性,
private :私有,是一個權限修飾符,用于修飾成員,
私有的內容只在本類中有效,
注意: 私有僅僅是封裝的一種體現,
public class testPet {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Pet pet = new Pet();
System.out.println("請輸入寵物的型別:1.狗 2.企鵝");
pet.setType(sc.next());
System.out.println("請輸入寵物的名字");
pet.setName(sc.next());
System.out.println("請輸入寵物的性別:1.老大哥 2.小老妹");
pet.setSex(sc.next());
System.out.println("請輸入寵物的健康值");
pet.setHealth(sc.nextInt());
System.out.println("請輸入與寵物的親密值(1~100),默認為60:");
pet.setClose(sc.nextInt());
pet.showInfo();
}
}


簡單滴應用一下
繼承
類的繼承格式
class 父類 { }
class 子類 extends 父類 { }
繼承的優點:
1 提高了代碼的復用性
2 提高了代碼的維護性
3 建立了類與類之間的關系,繼承是多型的前提,
繼承的缺點:
1 在一定程度上,造成類與類之間的強關聯,即所謂的高耦合,
2 父類功能的改變對子類也會造成影響,
題目!

public class Animal {
private int age;
public void info(){
System.out.printf("今年%d歲了\n",this.age);
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Bird extends Animal {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void Info(){
System.out.printf("我是一只%s色的鳥\n",color);
}
}
;

魚的沒有!
重寫和多型
重寫
verride是重寫(覆寫)了一個方法,以實作不同的功能,一般是用于子類在繼承父類時,重寫(重新實作)父類中的方法,
重寫(覆寫)的規則:
1、重寫方法的引數串列必須完全與被重寫的方法的相同,否則不能稱其為重寫而是多載.
2、重寫方法的訪問修飾符一定要大于被重寫方法的訪問修飾符(public>protected>default>private),
3、重寫的方法的回傳值必須和被重寫的方法的回傳一致;
4、重寫的方法所拋出的例外必須和被重寫方法的所拋出的例外一致,或者是其子類;
5、被重寫的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進行重寫,
6、靜態方法不能被重寫為非靜態的方法(會編譯出錯),
overload是多載,一般是用于在一個類內實作若干多載的方法,這些方法的名稱相同而引數形式不同,
多載的規則:
1、在使用多載時只能通過相同的方法名、不同的引數形式實作,不同的引數型別可以是不同的引數型別,不同的引數個數,不同的引數順序(引數型別必須不一樣);
2、不能通過訪問權限、回傳型別、拋出的例外進行多載;
3、方法的例外型別和數目不會對多載造成影響;
public void show(){
System.out.println("健康值增加"+this.health);
}

多型:體現為父類參考變數可以指向子類物件,
前提條件:必須有子父類關系,
注意:在使用多型后的父類參考變數呼叫方法時,會呼叫子類重寫后的方法,
多型的定義與使用格式
定義格式:父型別別 變數名=new 子型別別();
理解:
多型是同一個行為具有多個不同表現形式或形態的能力,
多型就是同一個介面,使用不同的實體而執行不同操作,
多型中成員的特點
多型成員變數:編譯運行看左邊
Fu f=new Zi();
System.out.println(f.num);//f是Fu中的值,只能取到父中的值
.多型成員方法:編譯看左邊,運行看右邊
Fu f1=new Zi();
System.out.println(f1.show());//f1的門面型別是Fu,但實際型別是Zi,所以呼叫的是重寫后的方法,
instanceof關鍵字
作用:用來判斷某個物件是否屬于某種資料型別,
注意: 回傳型別為布爾型別
public class Test {
public static void main(String[] args) {
Pet pet = new Penguin("企鵝");
Penguin p = (Penguin) pet;
p.swim();
Pet pet1 = new Dog("狗狗");
Dog d = (Dog)pet1;
d.paly();
System.out.println(d.equals(p));
}
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/235703.html
標籤:java
下一篇:猜數游戲
