日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java面向对象的三大特征(封装,继承,多态)

發布時間:2025/3/15 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面向对象的三大特征(封装,继承,多态) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.封裝

1.概念

?? 封裝是面向對象編程語言對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內部的,外界是無法直接操作的。

2.封裝原則

??將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問成員變量private,提供對應的getXxx()/setXxx()方法

3.封裝好處

??1.通過方法來控制成員變量的操作,提高了代碼的安全性
??2.把代碼用方法進行封裝,提高了代碼的復用性
??3.類內部的結構可以自由修改。隱藏信息,實現細節。

4.權限修飾符

??當我們在一個類中定義成員變量時,會指定一個變量的類型,除此之外,還會有修飾符的部分,在此給出定義成員變量的規范格式:

// 定義變量 1.[修飾符] 變量類型 變量名稱; 2.[修飾符] 變量類型 變量名稱 = 初始值;
??修飾符起到的作用從字面就可以解釋,起到一個修飾和限定的作用,可以使用在成員變量之前的修飾符可以是public、protected、private、final、static。

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具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。

    public class C implements A,B { }

    3、super 與 this 關鍵字
    super關鍵字:我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前對象的父類
    this關鍵字:指向自己的引用。
    4、final關鍵字

    • fianl關鍵字的作用
      • final代表最終的意思,可以修飾成員方法,成員變量,類
    • final修飾類、方法、變量的效果
      • fianl修飾類:該類不能被繼承(不能有子類,但是可以有父類)
      • final修飾方法:該方法不能被重寫
      • final修飾變量:表明該變量是一個常量,不能再次賦值
        final不能修飾構造器
        final與static搭配使用不會導致類加載

    Final拓展:

    5.static關鍵字
    static的訪問特點

    • 非靜態的成員方法
      • 能訪問靜態的成員變量
      • 能訪問非靜態的成員變量
      • 能訪問靜態的成員方法
      • 能訪問非靜態的成員方法
    • 靜態的成員方法
      • 能訪問靜態的成員變量
      • 能訪問靜態的成員方法
    • 總結成一句話就是:
      • 靜態成員方法只能訪問靜態成員

    6.繼承的注意事項

    Java中繼承的注意事項

  • Java中類只支持單繼承,不支持多繼承
    錯誤范例:class A extends B, C { }
  • Java中類支持多層繼承
  • 7.重寫

    • 方法重寫的注意事項
  • 私有方法不能被重寫(父類私有成員子類是不能繼承的)
  • 子類方法訪問權限不能更低(public > 默認 > 私有)
    3.代碼實現
  • 代碼: public class InheritenceTest {public static void main(String[] args) {Dog dog = new Dog();dog.run();} }class Animal {public void run() {System.out.println("animal is running");} }class Dog extends Animal {public void run() {System.out.println("Dog is running");super.run();//調用父類的run方法}} }// 方法重寫與方法重載之間的關系:重載發生在同一個類內部的兩個方法或多個方法。重寫發生在父類和子類之間。

    三.多態

    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面向对象的三大特征(封装,继承,多态)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。