c 子类对象 访问父类对象受保护成员_java面向对象总结
前言:文章參考《java瘋狂講義》進行總結和歸納,知識要進行輸出才算真正的有用。
在java的世界里,一切皆為對象,類是對對象的抽象,來一個例子:Person類
public有了類,就可以創建者個類的對象了,語法如下:
Person p1 = new Person("tom",9,"Beijing");//創建對象 p1.eat();//調用方法java的三個特點是:繼承、封裝、多態,都是和面向對象有關系的,下面進行解釋
1 繼承
繼承就是子類繼承父類的特征和和行為,使得子類對象(實例)具有父類的實例域和方法,還可以以此基礎添加新方法和域來滿足需求,舉個例子:
Person類是父類,那么Student類是子類(學生是人,滿足is-a關系),java規定一個子類只能擁有一個父類,子類對象實例化時一定先實例化父類對象。
public class Person{//父類}//子類繼承父類 public class Student extents Person{}特點:提高代碼復用性、父類的屬性方法可以用于子類、 可以輕松的定義子類、 使設計應用程序變得簡單。
注意事項:只支持單繼承,即一個子類只允許有一個父類,但是可以實現多級繼承,及子類擁有唯一的父類,而父類還可以再繼承。? 子類可以擁有父類的屬性和方法。? 子類可以擁有自己的屬性和方法。? 子類可以重寫覆蓋父類的方法。
繼承的使用:
a,直接通過子類對象訪問成員變量
? 等號左邊是誰,就優先使用誰,如果沒有就向上找。
b,間接通過成員方法訪問成員變量
該方法屬于誰,誰就優先使用,如果沒有就向上找。
public class FU {int numFU = 10;int num = 100;public void method(){System.out.println("父類成員變量:"+numFU);}public void methodFU(){System.out.println("父類成員方法!");} } public class Zi extends FU{int numZi = 20;int num = 200;public void method(){System.out.println("子類成員變量:"+numFU);}public void methodZi(){System.out.println("子類方法!");} } public class ExtendDemo {public static void main(String[] args) {FU fu = new FU();// 父類的實體對象只能調用父類的成員變量System.out.println("父類:" + fu.numFU); // 結果:10Zi zi = new Zi();System.out.println("調用父類:" + zi.numFU); // 結果:10System.out.println("子類:" + zi.numZi); // 結果:20/** 輸出結果為200,證明在重名情況下,如果子類中存在則優先使用,* 如果不存在則去父類查找,但如果父類也沒有那么編譯期就會報錯。*/System.out.println(zi.num); // 結果:200/*** 通過成員方法調用成員變量*/zi.method(); // 結果:10} }?成員方法也是一樣的,創建的對象是誰,就優先使用誰,如果沒有則直接向上找。
注意事項:? 無論是成員變量還是成員方法,如果沒有都是向上父類中查找,絕對不會向下查找子類的
在繼承關系中,關于成員變量的使用:?
局部成員變量:直接使用
本類成員變量:this.成員變量
父類成員變量:super.父類成員變量
2 封裝
封裝(Encapsulation)是面向對象方法的重要原則,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,并盡可能隱藏對象的內部實現細節。
特點:對成員變量實行更準確的控制,封裝可以隱藏內部程序實現的細節,良好的封裝能夠減少代碼之間的耦合度,外部成員無法修改已封裝好的程序代碼,方便數據檢查,有利于保護對象信息的完整性,同時也提高程序的安全性,便于修改,體高代碼的可維護性
使用:使用private修飾符,表示最小的訪問權限;對成員變量的訪問,統一提供setXXX,getXXX方法
public class Student implements Serializable {private Long id;private String name;private Integer sex;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;} }3 多態
多態是同一個行為具有多個不同表現形式或形態的能力。
特點:消除類型之間的耦合關系,實現低耦合;靈活性;? 可擴充性;? 可替換性
使用:
public class MultiDemo {public static void main(String[] args) {// 多態的引用,就是向上轉型Animals dog = new Dog();dog.eat();Animals cat = new Cat();cat.eat();// 如果要調用父類中沒有的方法,則要向下轉型Dog dogDown = (Dog)dog;dogDown.watchDoor();}}class Animals {public void eat(){System.out.println("動物吃飯!");}}class Dog extends Animals{public void eat(){System.out.println("狗在吃骨頭!");}public void watchDoor(){System.out.println("狗看門!");}}class Cat extends Animals{public void eat(){System.out.println("貓在吃魚!");}}向上轉型:1,格式:父類名稱 對象名 = new 子類名稱();
含義:右側創建一個子類對象,把它當作父類來使用。
注意:向上轉型一定是安全的。 缺點:一旦向上轉型,子類中原本特有的方法就不能再被調用了。
總結
以上是生活随笔為你收集整理的c 子类对象 访问父类对象受保护成员_java面向对象总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用java做一个截图工具_Java制作屏
- 下一篇: 7安装sql cent os serve