日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

一.封裝

1.概念

?? 封裝是面向?qū)ο缶幊陶Z言對(duì)客觀世界的模擬,客觀世界里成員變量都是隱藏在對(duì)象內(nèi)部的,外界是無法直接操作的。

2.封裝原則

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

3.封裝好處

??1.通過方法來控制成員變量的操作,提高了代碼的安全性
??2.把代碼用方法進(jìn)行封裝,提高了代碼的復(fù)用性
??3.類內(nèi)部的結(jié)構(gòu)可以自由修改。隱藏信息,實(shí)現(xiàn)細(xì)節(jié)。

4.權(quán)限修飾符

??當(dāng)我們?cè)谝粋€(gè)類中定義成員變量時(shí),會(huì)指定一個(gè)變量的類型,除此之外,還會(huì)有修飾符的部分,在此給出定義成員變量的規(guī)范格式:

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

5.封裝代碼

```java 代碼演示: /*學(xué)生類*/public class Student {private int number;//private修飾三個(gè)屬性private int state;private int score;public Student (){}//無參構(gòu)造器public Student(int number,int state,int score){this.number=number;this.state=state;this.score=score;}//有參構(gòu)造器/*下面是Student類提供的get() set()方法外界可以通過他們?cè)L問!*/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;} } =============================== /*測(cè)試類*? public class StudentDemo {public static void main(String[] args) {//無參構(gòu)造方法創(chuàng)建對(duì)象后使用setXxx()賦值Student s1 = new Student();s1.setName("林青霞");s1.setAge(30);s1.show();//使用帶參構(gòu)造方法直接創(chuàng)建帶有屬性值的對(duì)象Student s2 = new Student("林青霞",30);s2.show();} }

二.繼承

1.概述

??繼承是面向?qū)ο笳Z法的三大特征之一。繼承可以降低代碼編寫的冗余度,提高編程的效率。通過繼承,子類獲得了父類的成員變量和方法。繼承就是子類繼承父類的特征和行為,使得子類對(duì)象(實(shí)例)具有父類的實(shí)例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

2.繼承優(yōu)點(diǎn)

1.繼承過來的字段和方法,可以像任何其他字段和方法一樣被直接使用;
2.在子類中可以聲明一個(gè)與父類中同名的新字段或靜態(tài)方法,從而“隱藏”父類中的字段或方法;
3.可以在子類中聲明一個(gè)在父類中沒有的新字段和方法;
4.可以在子類中編寫一個(gè)父類當(dāng)中具有相同名的新實(shí)例方法,這稱為“方法重寫”或“方法覆蓋”;
5.可以在子類中編寫一個(gè)調(diào)用父類構(gòu)造方法的子類構(gòu)造方法,既可以隱式地實(shí)現(xiàn),也可以通過使用關(guān)鍵字super來實(shí)現(xiàn)。

3.變量訪問特點(diǎn)

在子類方法中訪問一個(gè)變量,采用的是就近原則。
  • 子類局部范圍找
  • 子類成員范圍找
  • 父類成員范圍找
  • 如果都沒有就報(bào)錯(cuò)(不考慮父親的父親…)
  • 4.代碼演示

    //代碼演示: class teacher{ //聲明一個(gè)teacher類為父類String name; //定義父類的成員變量name、age int age;void show(){ //定義父類成員方法,將成員變量輸出System.out.println(name); System.out.println(age); } } class Student extends teacher { //聲明一個(gè)Student類為子類并繼承父類 } public class myfirst {public static void main(String[] args) {System.out.println("學(xué)生");Student student=new Student(); //聲明一個(gè)Student類的實(shí)例對(duì)象studentstudent.name="Tom"; //子類調(diào)用父類的成員變量name并賦值student.age=19; //子類調(diào)用父類的成員變量age并賦值student.show(); //子類調(diào)用父類的成員方法show} }

    5.繼承中的關(guān)鍵字

    1、 extends關(guān)鍵字
    在 Java 中,類的繼承是單一繼承,也就是說,一個(gè)子類只能擁有一個(gè)父類,所以 extends 只能繼承一個(gè)類。
    2、implements關(guān)鍵字
    使用 implements 關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時(shí)繼承多個(gè)接口(接口跟接口之間采用逗號(hào)分隔)。

    public class C implements A,B { }

    3、super 與 this 關(guān)鍵字
    super關(guān)鍵字:我們可以通過super關(guān)鍵字來實(shí)現(xiàn)對(duì)父類成員的訪問,用來引用當(dāng)前對(duì)象的父類
    this關(guān)鍵字:指向自己的引用。
    4、final關(guān)鍵字

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

    Final拓展:

    5.static關(guān)鍵字
    static的訪問特點(diǎn)

    • 非靜態(tài)的成員方法
      • 能訪問靜態(tài)的成員變量
      • 能訪問非靜態(tài)的成員變量
      • 能訪問靜態(tài)的成員方法
      • 能訪問非靜態(tài)的成員方法
    • 靜態(tài)的成員方法
      • 能訪問靜態(tài)的成員變量
      • 能訪問靜態(tài)的成員方法
    • 總結(jié)成一句話就是:
      • 靜態(tài)成員方法只能訪問靜態(tài)成員

    6.繼承的注意事項(xiàng)

    Java中繼承的注意事項(xiàng)

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

    • 方法重寫的注意事項(xiàng)
  • 私有方法不能被重寫(父類私有成員子類是不能繼承的)
  • 子類方法訪問權(quán)限不能更低(public > 默認(rèn) > 私有)
    3.代碼實(shí)現(xiàn)
  • 代碼: 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();//調(diào)用父類的run方法}} }// 方法重寫與方法重載之間的關(guān)系:重載發(fā)生在同一個(gè)類內(nèi)部的兩個(gè)方法或多個(gè)方法。重寫發(fā)生在父類和子類之間。

    三.多態(tài)

    1.多態(tài)概述

    • 什么是多態(tài)

      ? 同一個(gè)對(duì)象,在不同時(shí)刻表現(xiàn)出來的不同形態(tài)

    • 多態(tài)的前提

      • 要有繼承或?qū)崿F(xiàn)關(guān)系
      • 要有方法的重寫
      • 要有父類引用指向子類對(duì)象

    2.代碼演示

    代碼: /*接口類*/ public interface Jumpping {void Jump();} /*測(cè)試類*/ public class AnimalDemo {public static void main(String[] args) {Jumpping j=new Cat();//父類引用指向子類也叫向上轉(zhuǎn)型j.Jump();}}

    3.成員訪問特點(diǎn)

    成員訪問特點(diǎn)

    • 成員變量

      ? 編譯看父類,運(yùn)行看父類

    • 成員方法

      ? 編譯看父類,運(yùn)行看子類

    4.多態(tài)的轉(zhuǎn)型

    • 向上轉(zhuǎn)型

      ? 父類引用指向子類對(duì)象就是向上轉(zhuǎn)型
      例子:Animal a=new Cat()

    • 向下轉(zhuǎn)型

      ? 格式:子類型 對(duì)象名 = (子類型)父類引用;
      例子:Cat c=(Cat) Animal

    5.多態(tài)的好處與弊端

    • 好處

      ? 提高程序的擴(kuò)展性。定義方法時(shí)候,使用父類型作為參數(shù),在使用的時(shí)候,使用具體的子類型參與操作

    • 弊端

      ? 不能使用子類的特有成員

    總結(jié)

    以上是生活随笔為你收集整理的Java面向对象的三大特征(封装,继承,多态)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。