Java面向对象的三大特征(封装,继承,多态)
一.封裝
1.概念
?? 封裝是面向對象編程語言對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內部的,外界是無法直接操作的。
2.封裝原則
??將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問成員變量private,提供對應的getXxx()/setXxx()方法
3.封裝好處
??1.通過方法來控制成員變量的操作,提高了代碼的安全性
??2.把代碼用方法進行封裝,提高了代碼的復用性
??3.類內部的結構可以自由修改。隱藏信息,實現細節。
4.權限修飾符
??當我們在一個類中定義成員變量時,會指定一個變量的類型,除此之外,還會有修飾符的部分,在此給出定義成員變量的規范格式:
| // 定義變量 1.[修飾符] 變量類型 變量名稱; 2.[修飾符] 變量類型 變量名稱 = 初始值; |
5.封裝代碼
```java 代碼演示: /*學生類*/public class Student {private int number;//private修飾三個屬性private int state;private int score;public Student (){}//無參構造器public Student(int number,int state,int score){this.number=number;this.state=state;this.score=score;}//有參構造器/*下面是Student類提供的get() set()方法外界可以通過他們訪問!*/public void setNumber(int number){this.number=number;}public int getNumber(){return number;}public void setState(int state){this.state=state;}public int getState(){return state;}public void setScore(int score){this.score=score;}public int getScore(){return score;} } =============================== /*測試類*? public class StudentDemo {public static void main(String[] args) {//無參構造方法創建對象后使用setXxx()賦值Student s1 = new Student();s1.setName("林青霞");s1.setAge(30);s1.show();//使用帶參構造方法直接創建帶有屬性值的對象Student s2 = new Student("林青霞",30);s2.show();} }二.繼承
1.概述
??繼承是面向對象語法的三大特征之一。繼承可以降低代碼編寫的冗余度,提高編程的效率。通過繼承,子類獲得了父類的成員變量和方法。繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
2.繼承優點
1.繼承過來的字段和方法,可以像任何其他字段和方法一樣被直接使用;
2.在子類中可以聲明一個與父類中同名的新字段或靜態方法,從而“隱藏”父類中的字段或方法;
3.可以在子類中聲明一個在父類中沒有的新字段和方法;
4.可以在子類中編寫一個父類當中具有相同名的新實例方法,這稱為“方法重寫”或“方法覆蓋”;
5.可以在子類中編寫一個調用父類構造方法的子類構造方法,既可以隱式地實現,也可以通過使用關鍵字super來實現。
3.變量訪問特點
| 在子類方法中訪問一個變量,采用的是就近原則。 |
4.代碼演示
//代碼演示: class teacher{ //聲明一個teacher類為父類String name; //定義父類的成員變量name、age int age;void show(){ //定義父類成員方法,將成員變量輸出System.out.println(name); System.out.println(age); } } class Student extends teacher { //聲明一個Student類為子類并繼承父類 } public class myfirst {public static void main(String[] args) {System.out.println("學生");Student student=new Student(); //聲明一個Student類的實例對象studentstudent.name="Tom"; //子類調用父類的成員變量name并賦值student.age=19; //子類調用父類的成員變量age并賦值student.show(); //子類調用父類的成員方法show} }5.繼承中的關鍵字
1、 extends關鍵字
在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。
2、implements關鍵字
使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。
3、super 與 this 關鍵字
super關鍵字:我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前對象的父類
this關鍵字:指向自己的引用。
4、final關鍵字
- fianl關鍵字的作用
- final代表最終的意思,可以修飾成員方法,成員變量,類
- final修飾類、方法、變量的效果
- fianl修飾類:該類不能被繼承(不能有子類,但是可以有父類)
- final修飾方法:該方法不能被重寫
- final修飾變量:表明該變量是一個常量,不能再次賦值
final不能修飾構造器
final與static搭配使用不會導致類加載
Final拓展:
5.static關鍵字
static的訪問特點
- 非靜態的成員方法
- 能訪問靜態的成員變量
- 能訪問非靜態的成員變量
- 能訪問靜態的成員方法
- 能訪問非靜態的成員方法
- 靜態的成員方法
- 能訪問靜態的成員變量
- 能訪問靜態的成員方法
- 總結成一句話就是:
- 靜態成員方法只能訪問靜態成員
6.繼承的注意事項
Java中繼承的注意事項
錯誤范例:class A extends B, C { }
7.重寫
- 方法重寫的注意事項
3.代碼實現
三.多態
1.多態概述
-
什么是多態
? 同一個對象,在不同時刻表現出來的不同形態
-
多態的前提
- 要有繼承或實現關系
- 要有方法的重寫
- 要有父類引用指向子類對象
2.代碼演示
代碼: /*接口類*/ public interface Jumpping {void Jump();} /*測試類*/ public class AnimalDemo {public static void main(String[] args) {Jumpping j=new Cat();//父類引用指向子類也叫向上轉型j.Jump();}}3.成員訪問特點
成員訪問特點
-
成員變量
? 編譯看父類,運行看父類
-
成員方法
? 編譯看父類,運行看子類
4.多態的轉型
-
向上轉型
? 父類引用指向子類對象就是向上轉型
例子:Animal a=new Cat() -
向下轉型
? 格式:子類型 對象名 = (子類型)父類引用;
例子:Cat c=(Cat) Animal
5.多態的好處與弊端
-
好處
? 提高程序的擴展性。定義方法時候,使用父類型作為參數,在使用的時候,使用具體的子類型參與操作
-
弊端
? 不能使用子類的特有成員
總結
以上是生活随笔為你收集整理的Java面向对象的三大特征(封装,继承,多态)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高cpu_再一次生产 CPU 高负载排查
- 下一篇: java美元兑换,(Java实现) 美元