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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java基础知识——面向对象基本概念

發布時間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java基础知识——面向对象基本概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Java基本概念
  • 源文件聲明規則
    • Java包
    • Import語句
    • 繼承類型
    • 繼承的特性
    • 繼承關鍵字
    • super 與 this 關鍵字
    • 構造器
    • 方法的重寫規則
    • 重載(Overload)
    • 重寫與重載之間的區別
    • java 接口
      • 接口與類相似點:
      • 接口與類的區別:
      • 接口特性
      • 抽象類和接口的區別
      • 接口的聲明
      • 接口的實現
      • 接口的繼承
      • 接口的多繼承
      • 標記接口

Java基本概念

Java作為一種面向對象語言。支持以下基本概念:

  • 多態

多態是同一個行為具有多個不同表現形式或形態的能力。
多態就是同一個接口,使用不同的實例而執行不同操作

  • 繼承

繼承是java面向對象編程技術的一塊基石,因為它允許創建分等級層次的類。
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。繼承需要符合的關系是:is-a,父類更通用,子類更具體。
類的繼承格式
在 Java 中通過 extends 關鍵字可以申明一個類是從另外一個類繼承而來的,一般形式如下:

class 父類 { } class 子類 extends 父類 { }
  • 封裝

在面向對象程式設計方法中,封裝(英語:Encapsulation)是指一種將抽象性函式接口的實現細節部份包裝、隱藏起來的方法。
封裝可以被認為是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問。
要訪問該類的代碼和數據,必須通過嚴格的接口控制。
封裝最主要的功能在于我們能修改自己的實現代碼,而不用修改那些調用我們代碼的程序片段。
適當的封裝可以讓程式碼更容易理解與維護,也加強了程序源代碼的安全性。
1.修改屬性的可見性來限制對屬性的訪問(一般限制為private)
2.對每個值屬性提供對外的公共方法訪問,也就是創建一對賦取值方法,用于對私有屬性的訪問

  • 抽象

在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
1.抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。
2.由于抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用。也是因為這個原因,通常在設計階段決定要不要設計抽象類。
3.父類包含了子類集合的常見的方法,但是由于父類本身是抽象的,所以不能使用這些方法。
4.在Java中抽象類表示的是一種繼承關系,一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
5.在Java語言中使用abstract class來定義抽象類

類:類是一個模板,它描述一類對象的行為和狀態。類可以看成是創建Java對象的模板。

  • 對象

對象:對象是類的一個實例(對象不是找個女朋友),有狀態和行為。例如,一條狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
對象是根據類創建的。在Java中,使用關鍵字new來創建一個新的對象。創建對象需要以下三步:
1.聲明:聲明一個對象,包括對象名稱和對象類型。
2.實例化:使用關鍵字new來創建一個對象。
3.初始化:使用new創建對象時,會調用構造方法初始化對象。

  • 實例
  • 方法
  • 重載

源文件聲明規則

當在一個源文件中定義多個類,并且還有import語句和package語句時,要特別注意這些規則。

  • 一個源文件中只能有一個public類
  • 一個源文件可以有多個非public類
  • 源文件的名稱應該和public類的類名保持一致。例如:源文件中public類的類名是Employee,那么源文件應該命名為Employee.java。
  • 如果一個類定義在某個包中,那么package語句應該在源文件的首行。
  • 如果源文件包含import語句,那么應該放在package語句和類定義之間。如果沒有package語句,那么import語句應該在源文件中最前面。
  • import語句和package語句對源文件中定義的所有類都有效。在同一源文件中,不能給不同的類不同的包聲明。
  • 類有若干種訪問級別,并且類也分不同的類型:抽象類和final類等。

Java包

包主要用來對類和接口進行分類。當開發Java程序時,可能編寫成百上千的類,因此很有必要對類和接口進行分類

Import語句

在Java中,如果給出一個完整的限定名,包括包名、類名,那么Java編譯器就可以很容易地定位到源代碼或者類。Import語句就是用來提供一個合理的路徑,使得編譯器可以找到某個類。

繼承類型

需要注意的是 Java 不支持多繼承,但支持多重繼承。

繼承的特性

1.子類擁有父類非 private 的屬性、方法。
2.子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。
3.子類可以用自己的方式實現父類的方法。
4.Java 的繼承是單繼承,但是可以多重繼承,單繼承就是一個子類只能繼承一個父類,多重繼承就是,例如 A 類繼承 B 類,B 類繼承 C 類,所以按照關系就是 C 類是 B 類的父類,B 類是 A 類的父類,這是 Java 繼承區別于 C++ 繼承的一個特性。
5.提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯系越緊密,代碼獨立性越差)。

繼承關鍵字

繼承可以使用 extends 和 implements 這兩個關鍵字來實現繼承,而且所有的類都是繼承于 java.lang.Object,當一個類沒有繼承的兩個關鍵字,則默認繼承object(這個類在 java.lang 包中,所以不需要 import)祖先類。

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

super 與 this 關鍵字

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

構造器

子類是不繼承父類的構造器(構造方法或者構造函數)的,它只是調用(隱式或顯式)。如果父類的構造器帶有參數,則必須在子類的構造器中顯式地通過 super 關鍵字調用父類的構造器并配以適當的參數列表。

如果父類構造器沒有參數,則在子類的構造器中不需要使用 super 關鍵字調用父類構造器,系統會自動調用父類的無參構造器

方法的重寫規則

  • 參數列表必須完全與被重寫方法的相同。
  • 返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的派生類(java5 及更早版本返回類型要一樣,java7 及更高版本可以不同)。
  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:如果父類的一個方法被聲明為 public,那么在子類中重寫該方法就不能聲明為 protected。
  • 父類的成員方法只能被它的子類重寫。
  • 聲明為 final 的方法不能被重寫。
  • 聲明為 static 的方法不能被重寫,但是能夠被再次聲明。
  • 子類和父類在同一個包中,那么子類可以重寫父類所有方法,除了聲明為 private 和 final 的方法。
  • 子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為 public 和 protected 的非 final 方法。
  • 重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。
  • 構造方法不能被重寫。
  • 如果不能繼承一個方法,則不能重寫這個方法。

重載(Overload)

重載(overloading) 是在一個類里面,方法名字相同,而參數不同。返回類型可以相同也可以不同。
每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。
最常用的地方就是構造器的重載。
重載規則:

  • 被重載的方法必須改變參數列表(參數個數或類型不一樣);
  • 被重載的方法可以改變返回類型;
  • 被重載的方法可以改變訪問修飾符;
  • 被重載的方法可以聲明新的或更廣的檢查異常;
  • 方法能夠在同一個類中或者在一個子類中被重載。
  • 無法以返回值類型作為重載函數的區分標準。

重寫與重載之間的區別

區別點重載方法重寫方法
參數列表必須修改一定不能修改
返回類型可以修改一定不能修改
異常可以修改可以減少或刪除,一定不能拋出新的或者更廣的異常
訪問可以修改一定不能做更嚴格的限制(可以降低限制)

方法的重寫(Overriding)和重載(Overloading)是java多態性的不同表現,重寫是父類與子類之間多態性的一種表現,重載可以理解成多態的具體表現形式。
1.方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱為方法的重載(Overloading)。
2.方法重寫是在子類存在方法與父類的方法的名字相同,而且參數的個數與類型一樣,返回值也一樣的方法,就稱為重寫(Overriding)。
3.方法重載是一個類的多態性表現,而方法重寫是子類與父類的一種多態性表現。

java 接口

接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。

接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。

除非實現接口的類是抽象類,否則該類要定義接口中的所有方法。

接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。

接口與類相似點:

  • 一個接口可以有多個方法。
  • 接口文件保存在 .java 結尾的文件中,文件名使用接口名。
    接口的字節碼文件保存在 .class 結尾的文件中。
  • 接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。

接口與類的區別:

  • 接口不能用于實例化對象。
  • 接口沒有構造方法。
  • 接口中所有的方法必須是抽象方法。
  • 接口不能包含成員變量,除了 static 和 final 變量。
  • 接口不是被類繼承了,而是要被類實現。
  • 接口支持多繼承。

接口特性

  • 接口中每一個方法也是隱式抽象的,接口中的方法會被隱式的指定為 public abstract(只能是 public abstract,其他修飾符都會報錯)。
  • 接口中可以含有變量,但是接口中的變量會被隱式的指定為 public static final 變量(并且只能是 public,用 private 修飾會報編譯錯誤)。
  • 接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

抽象類和接口的區別

  • 抽象類中的方法可以有方法體,就是能實現方法的具體功能,但是接口中的方法不行。
  • 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。
  • 接口中不能含有靜態代碼塊以及靜態方法(用 static 修飾的方法),而抽象類是可以有靜態代碼塊和靜態方法。
  • 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
    注:JDK 1.8 以后,接口里可以有靜態方法和方法體了。

接口的聲明

接口的聲明語法格式如下:

[可見度] interface 接口名稱 [extends 其他的接口名] {// 聲明變量// 抽象方法 }

Interface關鍵字用來聲明一個接口。下面是接口聲明的一個簡單例子。

import java.lang.*; //引入包public interface NameOfInterface {//任何類型 final, static 字段//抽象方法 }

接口有以下特性:

  • 接口是隱式抽象的,當聲明一個接口的時候,不必使用abstract關鍵字。
  • 接口中每一個方法也是隱式抽象的,聲明時同樣不需要abstract關鍵字。
  • 接口中的方法都是公有的。
    實例
interface Animal {public void eat();public void travel(); }

接口的實現

當類實現接口的時候,類要實現接口中所有的方法。否則,類必須聲明為抽象的類。

類使用implements關鍵字實現接口。在類聲明中,Implements關鍵字放在class聲明后面。

實現一個接口的語法,可以使用這個公式:

...implements 接口名稱[, 其他接口名稱, 其他接口名稱..., ...] ...

實例

public class MammalInt implements Animal{public void eat(){System.out.println("Mammal eats");}public void travel(){System.out.println("Mammal travels");}public int noOfLegs(){return 0;}public static void main(String args[]){MammalInt m = new MammalInt();m.eat();m.travel();} }

以上實例編譯運行結果如下:

Mammal eats Mammal travels

重寫接口中聲明的方法時,需要注意以下規則:

  • 類在實現接口的方法時,不能拋出強制性異常,只能在接口中,或者繼承接口的抽象類中拋出該強制性異常。
  • 類在重寫方法時要保持一致的方法名,并且應該保持相同或者相兼容的返回值類型。
  • 如果實現接口的類是抽象類,那么就沒必要實現該接口的方法。

在實現接口的時候,也要注意一些規則:

  • 一個類可以同時實現多個接口。
  • 一個類只能繼承一個類,但是能實現多個接口。
  • 一個接口能繼承另一個接口,這和類之間的繼承比較相似。

接口的繼承

一個接口能繼承另一個接口,和類之間的繼承方式比較相似。接口的繼承使用extends關鍵字,子接口繼承父接口的方法。

下面的Sports接口被Hockey和Football接口繼承:

// 文件名: Sports.java public interface Sports {public void setHomeTeam(String name);public void setVisitingTeam(String name); }// 文件名: Football.java public interface Football extends Sports {public void homeTeamScored(int points);public void visitingTeamScored(int points);public void endOfQuarter(int quarter); }// 文件名: Hockey.java public interface Hockey extends Sports {public void homeGoalScored();public void visitingGoalScored();public void endOfPeriod(int period);public void overtimePeriod(int ot); }

Hockey接口自己聲明了四個方法,從Sports接口繼承了兩個方法,這樣,實現Hockey接口的類需要實現六個方法。

相似的,實現Football接口的類需要實現五個方法,其中兩個來自于Sports接口。

接口的多繼承

在Java中,類的多繼承是不合法,但接口允許多繼承。

在接口的多繼承中extends關鍵字只需要使用一次,在其后跟著繼承接口。 如下所示:

public interface Hockey extends Sports, Event

以上的程序片段是合法定義的子接口,與類不同的是,接口允許多繼承,而 Sports及 Event 可能定義或是繼承相同的方法

標記接口

最常用的繼承接口是沒有包含任何方法的接口。

標記接口是沒有任何方法和屬性的接口.它僅僅表明它的類屬于一個特定的類型,供其他代碼來測試允許做一些事情。

標記接口作用:簡單形象的說就是給某個對象打個標(蓋個戳),使對象擁有某個或某些特權。

例如:java.awt.event 包中的 MouseListener 接口繼承的 java.util.EventListener 接口定義如下:

package java.util; public interface EventListener {}

沒有任何方法的接口被稱為標記接口。標記接口主要用于以下兩種目的:

  • 建立一個公共的父接口:
    正如EventListener接口,這是由幾十個其他接口擴展的Java API,你可以使用一個標記接口來建立一組接口的父接口。例如:當一個接口繼承了EventListener接口,Java虛擬機(JVM)就知道該接口將要被用于一個事件的代理方案。

  • 向一個類添加數據類型:
    這種情況是標記接口最初的目的,實現標記接口的類不需要定義任何接口方法(因為標記接口根本就沒有方法),但是該類通過多態性變成一個接口類型。

總結

以上是生活随笔為你收集整理的java基础知识——面向对象基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩无码精品一区二区三区 | 久久久精品视频在线 | 亚洲素人 | 亚洲久热 | 国产在线视频二区 | 亚洲aaaaaa | 国产精品免费一区二区区 | 色老板av | av免播放器| 成人精品一区二区三区中文字幕 | 超碰av在线播放 | 操小妞| 亚洲成人精品在线 | 日本中文视频 | 人妻精品无码一区二区三区 | 欧美久久久久久久久 | 麻豆视频网址 | 国产淫语对白 | 国产精品www色诱视频 | 自拍偷拍av| 北岛玲av在线| 日韩精品网址 | 国产精品久久不卡 | 成人深夜电影 | 中国黄色一级大片 | 热久久中文 | 丰满尤物白嫩啪啪少妇 | 麻豆91精品 | 免费在线成人网 | 国产丝袜美腿一区二区三区 | 国产这里有精品 | 99视频在线| 国产成人久久精品流白浆 | 精品国产网站 | 欧美色999| 麻豆免费视频 | 神马午夜影院 | 日本 奴役 捆绑 受虐狂xxxx | 亚洲欧美日韩国产精品 | 91久热| 国产成人精品一区二区三区无码熬 | 成人做爰视频www | 日本一区二区三区视频在线播放 | 国产第一网站 | 亚洲爽片 | 伊人在线视频 | 国产在线视频你懂得 | 农村老女人av | 国产高清视频免费在线观看 | 日韩一区二区三区四区在线 | 先锋资源久久 | 日本免费在线视频观看 | 午夜簧片| 欧美日韩a | 欧美成网站| 久久婷婷成人综合色 | 精品久久久中文字幕人妻 | 一区二区欧美精品 | 又黄又爽的网站 | 伊人激情 | 久久久影院 | 19禁大尺度做爰无遮挡电影 | 香蕉伊人 | 久久久久久99精品 | 99r在线视频 | 日韩欧美中文字幕在线观看 | 日本成人片网站 | 亚洲国产91 | 久久久久久久麻豆 | 性爱免费视频 | 欧美三级日本三级 | 日本视频免费看 | 成人va在线观看 | 日本乱大交xxxx公交车 | 农村脱精光一级 | 亚洲欧美精品一区 | 激情视频在线播放 | 亚洲人在线观看视频 | 美女扒开尿口来摸 | 国产精品呻吟久久 | 99人妻少妇精品视频一区 | 在线高清免费观看 | 色网站在线免费观看 | 凹凸国产熟女精品视频 | 一区二区在线视频播放 | 女十八毛片 | 色播在线 | 亚洲六月丁香色婷婷综合久久 | 青青草视频观看 | 无码免费一区二区三区免费播放 | sm调教羞耻姿势图片 | www.啪啪| 成人黄色免费网址 | 日韩一级片视频 | 奇米一区二区三区 | 在线播放av片 | 怡红院成永久免费人全部视频 | 日韩欧美在线视频 | 亚洲国产综合久久 |