亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
4)過濾有效資料" >4)過濾有效資料
#5)總結(jié)" >#5)總結(jié)
#1)程式中的繼承" >#1)程式中的繼承
2)父類別的選擇" >2)父類別的選擇
3)繼承" >3)繼承
4)繼承的特點" >4)繼承的特點
5)不可繼承" >5)不可繼承
#1)方法的重寫/覆寫" >#1)方法的重寫/覆寫
2)方法重寫與方法重載的區(qū)別" >2)方法重寫與方法重載的區(qū)別
1)super關(guān)鍵字" >1)super關(guān)鍵字
2)super調(diào)用父類無參構(gòu)造" >2)super調(diào)用父類無參構(gòu)造
3)super調(diào)用父類有參構(gòu)造" >3)super調(diào)用父類有參構(gòu)造
4)this與super" >4)this與super
1)多態(tài)的應用" >1)多態(tài)的應用
首頁 Java Java基礎 java有哪三大特性

java有哪三大特性

Jan 06, 2023 pm 02:30 PM
java

java的三大特性是:1、封裝,就是將類別的某些資訊隱藏在類別內(nèi)部,不允許外部程式直接訪問,而是透過該類別提供的方法來實現(xiàn)對隱藏資訊的操作和存取。 2.繼承,就是子類別擁有父類別的所有屬性和方法,從而實現(xiàn)了實作程式碼的複用。 3.多態(tài),就是父類引用指向子類對象,產(chǎn)生多種型態(tài)。

java有哪三大特性

本教學操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

Java的三大特性

物件導向三大特性:封裝、繼承、多型。

封裝:

  • 將類別的某些資訊隱藏在類別內(nèi)部,不允許外部程式直接訪問,而是透過該類別提供的方法來實現(xiàn)對隱藏資訊的操作和訪問。

繼承:

  • 子類別擁有父類別的所有屬性和方法(除了private修飾的屬性不能擁有),從而實現(xiàn)了實現(xiàn)代碼的複用;

多態(tài):

  • 使用父類別引用接受,不同的子類別的物件實例,父類別參考呼叫相同的方法,根據(jù)子類別不同的實例,產(chǎn)生不同的結(jié)果

1、封裝

1)什麼是封裝

概念:盡可能隱藏物件的內(nèi)部實作細節(jié),控制物件的修改及存取的權(quán)限。

存取修飾符:private (可將屬性修飾為私有,僅本類別可見)

#2)公共存取方法

以存取方法的形式,進而完成賦值與取值運算。

問題:依舊沒有解決到非法資料輸入!

  • 提供公共存取方法,以確保資料的正常輸入。
  • 命名規(guī)格:
  • 賦值:setXXX() //使用方法參數(shù)實作賦值
  • 取值:getXXX() //使用方法回傳值實作取值

3)範例

public static void main(String[] args) {
		int a;
		Num num = new Num();
//		傳入值100
		num.setNum(100);
		System.out.println(num.getNum());
	}
private int a;

//	在調(diào)用get方法時,返回本類a的值
	public int getNum() {
		return a;
	}

//	接受傳入的值100,并賦值給本類的a
	public void setNum(int num) {
		this.a = num;
	}

4)過濾有效資料

在公共的存取方法內(nèi)部,加入邏輯判斷,進而過濾掉非法數(shù)據(jù),以確保資料安全。

#5)總結(jié)

get/set方法是外部存取物件私有屬性的唯一通道,方法內(nèi)部可偵測資料並篩選資料。

2、繼承

#1)程式中的繼承

  • 程式中的繼承,是類別與類別之間特徵和行為的一種贈與或獲得。
  • 兩個類別之間的繼承關(guān)係,必須滿足「is a」的關(guān)係。

2)父類別的選擇

  • #現(xiàn)實生活中,許多類別之間都存在著繼承關(guān)係,都滿足「is a」的關(guān)係。

  • 狗是一種動物、狗是一種生物、狗是一種物質(zhì)。

  • 多個類別都可作為「狗」的父類,需要從中選擇最適合的父類。

  • 功能越精細,重合點越多,越接近直接父類別。

  • 功能越粗略,重合點越少,越接近Object類別。 (萬物皆物件的概念)

3)繼承

語法:class 子類別extends 父類別{ } //定義子類別時,顯示繼承父類別

public class 子類名 extends 父類名{
	
	//代碼塊
	}

應用程式:產(chǎn)生繼承關(guān)係之後,子類別可以使用父類別中的屬性和方法,也可定義子類別獨有的屬性和方法。

好處:既提高程式碼的複用性,又提高程式碼的可擴充性。

4)繼承的特點

Java為單一繼承,一個類別只能有一個直接父類,但可以多層繼承,屬性和方法逐級疊加。

5)不可繼承

建構(gòu)方法:類別中的建構(gòu)方法,只負責建立本類對象,不可繼承。

private修飾的屬性和方法:存取修飾符的一種,僅本類別可見。

父子類別不在同一個package中時,default修飾的屬性與方法:存取修飾符的一種,僅同套件可見。

3、方法重寫

#1)方法的重寫/覆寫

方法重寫原則:

  • 方法名稱、參數(shù)清單與父類別相同。
  • 傳回值類型必須與父類別相同或其子類別
  • 存取修飾符可與父類別相同或是比父類別更寬泛。

方法重寫的執(zhí)行:

  • 子類別重寫父類別方法後,呼叫時優(yōu)先執(zhí)行子類別重寫後的方法。

  • 方法重寫的特性:

    子類別重寫父類別方法時子類別方法會覆寫父類別方法。

    子類別重寫父類別方法,存取層級不能嚴於父類別方法。

    子類別重寫方法名稱和類型與父類別一樣。

    父類的構(gòu)造方法無法重寫,只能被覆蓋。

示例:

//父類
public class Animal {
//	父類中吃的方法會輸出“玩玩玩”
	public void play() {
		System.out.println("玩玩玩");
	}

//	父類中睡的方法會輸出“睡睡睡”
	public void sleep() {
		System.out.println("睡睡睡");
	}

}
/**
 * 狗類繼承 父類
 */
public class Dog extends Animal {

//	進行方法重寫,將方法重寫輸出為“狗玩飛碟”
	public void play() {
		System.out.println("狗玩飛碟");
	}
}
public class Test {

	public static void main(String[] args) {
		// 實例化寵物對象
		Dog d = new Dog();
		d.play();
		d.sleep();
	}

}

運行輸出:

java有哪三大特性

2)方法重寫與方法重載的區(qū)別

相同點:方法名相同
不同點:
重載:參數(shù)列表不同,返回值與訪問修飾符無關(guān)
重寫:參數(shù)列表相同,返回值相同或其子類,訪問修飾符不能比父類更嚴

4、super關(guān)鍵字

1)super關(guān)鍵字

super關(guān)鍵字可在子類中訪問父類的方法。

  • 使用”super.”的形式訪問父類的方法,進而完成在子類中的復用;
  • 再疊加額外的功能代碼,組成新的功能。

2)super調(diào)用父類無參構(gòu)造

super():表示調(diào)用父類無參構(gòu)造方法。如果沒有顯示書寫,隱式存在于子類構(gòu)造方法的首行。

3)super調(diào)用父類有參構(gòu)造

super():表示調(diào)用父類無參構(gòu)造方法。

super(實參):表示調(diào)用父類有參構(gòu)造方法。
參構(gòu)造被執(zhí)行

4)this與super

this或super使用在構(gòu)造方法中時,都要求在首行。
當子類構(gòu)造中使用了this()或this(實參),即不可再同時書寫super()或super(實參),會由this()指向構(gòu)造方法完成super()調(diào)用。

class A{
		public A(){
		System.out.println(( "A-無參構(gòu)造"));
		}
		public A(int value) {
		System.out.println(("A-有參構(gòu)造")); 
		}
		}
		class B extends A{
		public B(){
		super();
		System.out.println( "B-無參構(gòu)造");
		}
		public B(int value) {
//		super();這兩貨不能跟同時存在
		this();
		System.out.println(("B-有參構(gòu)造"));
		}
		}

5、多態(tài)

概念:父類引用指向子類對象,從而產(chǎn)生多種形態(tài)。

二者具有直接或間接的繼承關(guān)系時,父類引用可指向子類對象,即形成多態(tài)。

父類引用僅可調(diào)用父類所聲明的屬性和方法,不可調(diào)用子類獨有的屬性和方法。

1)多態(tài)的應用

方法重載可以解決接收不同對象參數(shù)的問題,但其缺點也比較明顯。

  • 首先,隨著子類的增加,Master類需要繼續(xù)提供大量的方法重載,多次修改并重新編譯源文件。
  • 其次,每一個feed方法與某一種具體類型形成了密不可分的關(guān)系,耦合太高。

場景一:使用父類作為方法形參實現(xiàn)多態(tài),使方法參數(shù)的類型更為寬泛。

public class Animal {
//		父類中吃的方法會輸出“玩玩玩”
	public void play() {
		System.out.println("玩玩玩");
	}

//	父類中睡的方法會輸出“睡睡睡”
	public void sleep() {
		System.out.println("睡睡睡");
	}

}
/**
 * 狗類繼承 父類
 * 
 * 
 *
 */
public class Dog extends Animal {

//	狗類特有的方法“狗吃狗糧”
	public void eat() {
		System.out.println("狗吃狗糧");
	}

}
public class Test {

	public static void main(String[] args) {
		// 實例化寵物對象
		Animal d = new Dog();
		d.play();
		d.sleep();
//		The method eat() is undefined for the type Animal
//		對于類型動物,eat()方法未定義
//		當我們?nèi)フ{(diào)用子類對象的特有方法時,就會爆出上面的錯誤提示
//		如果想要實現(xiàn)子類特有方法,就必須要強轉(zhuǎn)
//		d.eat();
		((Dog) d).eat();
	}

}

運行輸出:

java有哪三大特性

場景二:使用父類作為方法返回值實現(xiàn)多態(tài),使方法可以返回不同子類對象。

示例:

//動物類  父類
public class Animal {
	public void food() {
		System.out.println("...");
	}
}
//用extends關(guān)鍵字,繼承父類屬性
public class Dog extends Animal {

	public void food() {
		System.out.println("狗吃狗糧");
	}

	public void runing() {
		System.out.println("一直跑跑跳跳");
	}
}
//用extends關(guān)鍵字,繼承父類屬性
public class Fish extends Animal {
	public void food() {
		System.out.println("大魚吃小魚,小魚吃蝦米");
	}

	public void swimming() {
		System.out.println("小魚兒,一直游");
	}
}
public class Master {
//	傳入你的動物,并去給它喂食
	public void food(Animal animal) {
		System.out.println("喂食");
		animal.food();
	}
}
import java.util.Scanner;

public class Shopping {
//	你沒有動物,所以animal為空
	Animal animal = null;

//	判斷你要購買的寵物,并返回寵物類(狗、魚)
	public Animal shopping(int a) {
		if (a == 1) {
			animal = new Dog();
		} else if (a == 2) {
			animal = new Fish();
		}
//		this.animal=animal;
		return animal;
	}

	public void showMenu() {
		Scanner input = new Scanner(System.in);
		System.out.println("歡迎來到一只寵物寵物店");
		System.out.println("請選擇喜歡的寵物:");
		System.out.println("1.狗 2.魚 ");
		int a = input.nextInt();
		Animal animal = shopping(a);
		Master mm = new Master();
		mm.food(animal);
//		用instanceof判斷你買的是狗還是魚。
//		狗就執(zhí)行狗的屬性和方法,魚就執(zhí)行魚的屬性和方法
		if (animal instanceof Dog) {
			Dog d = (Dog) animal;
			d.runing();
		} else if (animal instanceof Fish) {
			Fish f = (Fish) animal;
			f.swimming();
		}

	}
}
//測試類
public class text {
	public static void main(String[] args) {
		Shopping shop = new Shopping();
		shop.showMenu();
	}
}

運行結(jié)果:

java有哪三大特性

2)多態(tài)的靜態(tài)和動態(tài)實現(xiàn)

動態(tài)綁定:即為重寫/覆蓋,方法的重寫

動態(tài)綁定也叫后期綁定,在運行時,虛擬機根據(jù)具體對象實例的類型進行綁定,或者說是只有對象在虛擬機中運行創(chuàng)建了之后,才能確定方法屬于哪一個對象實例的

  • 根據(jù)實際對象是什么,就去找相應對象方法去執(zhí)行。
  • 動態(tài)綁定是在運行時才會執(zhí)行(例如重寫的方法)。

靜態(tài)綁定:即為重載,方法的重載

一個方法的參數(shù)在編譯階段常被靜態(tài)地綁定,它是根據(jù)參數(shù)列表的不同來區(qū)分不同的函數(shù),通過編輯之后會變成兩個不同的函數(shù)

  • 根據(jù)類型找相應的屬性或者靜態(tài)變量。
  • 靜態(tài)綁定是在編譯時執(zhí)行(如成員變量,靜態(tài)方法)。

更多編程相關(guān)知識,請訪問:編程教學??!

以上是java有哪三大特性的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CSS暗模式切換示例 CSS暗模式切換示例 Jul 30, 2025 am 05:28 AM

首先通過JavaScript獲取用戶系統(tǒng)偏好和本地存儲的主題設置,初始化頁面主題;1.HTML結(jié)構(gòu)包含一個按鈕用於觸發(fā)主題切換;2.CSS使用:root定義亮色主題變量,.dark-mode類定義暗色主題變量,並通過var()應用這些變量;3.JavaScript檢測prefers-color-scheme並讀取localStorage決定初始主題;4.點擊按鈕時切換html元素上的dark-mode類,並將當前狀態(tài)保存至localStorage;5.所有顏色變化均帶有0.3秒過渡動畫,提升用戶

VSCODE設置。 JSON位置 VSCODE設置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項目根目錄下的.vscode/settings

CSS下拉菜單示例 CSS下拉菜單示例 Jul 30, 2025 am 05:36 AM

是的,一個常見的CSS下拉菜單可以通過純HTML和CSS實現(xiàn),無需JavaScript。 1.使用嵌套的ul和li構(gòu)建菜單結(jié)構(gòu);2.通過:hover偽類控制下拉內(nèi)容的顯示與隱藏;3.父級li設置position:relative,子菜單使用position:absolute進行定位;4.子菜單默認display:none,懸停時變?yōu)閐isplay:block;5.可通過嵌套實現(xiàn)多級下拉,結(jié)合transition添加淡入動畫,配合媒體查詢適配移動端,整個方案簡潔且無需JavaScript支持,適合大

CSS全頁佈局示例 CSS全頁佈局示例 Jul 30, 2025 am 05:39 AM

使用Flexbox或Grid可實現(xiàn)全屏佈局,核心是讓頁面最小高度為視口高度(min-height:100vh);2.通過flex:1或grid-template-rows:auto1frauto使內(nèi)容區(qū)域佔滿剩餘空間;3.設置box-sizing:border-box確保內(nèi)邊距不超出容器;4.配合響應式媒體查詢優(yōu)化移動端體驗;該方案兼容性好且結(jié)構(gòu)清晰,適用於登錄頁、儀錶盤等場景,最終實現(xiàn)內(nèi)容垂直居中並佔滿視口的全屏頁面佈局。

使用Java,Spring Boot和React的全堆棧Web開發(fā) 使用Java,Spring Boot和React的全堆棧Web開發(fā) Jul 31, 2025 am 03:33 AM

選擇Java SpringBoot React技術(shù)??蓸?gòu)建穩(wěn)定高效的全棧Web應用,適合從中小型到大型企業(yè)級系統(tǒng)。 2.後端使用SpringBoot快速搭建RESTfulAPI,核心組件包括SpringWeb、SpringDataJPA、SpringSecurity、Lombok和Swagger,通過@RestController返回JSON數(shù)據(jù)實現(xiàn)前後端分離。 3.前端採用React(配合Vite或CreateReactApp)開發(fā)響應式界面,使用Axios調(diào)用後端API,ReactRouter管

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務,必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務;2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設置保存點實現(xiàn)部分回滾,並保持事務盡可能短以提升性能。

Java性能優(yōu)化和分析技術(shù) Java性能優(yōu)化和分析技術(shù) Jul 31, 2025 am 03:58 AM

使用性能分析工具定位瓶頸,開發(fā)測試階段用VisualVM或JProfiler,生產(chǎn)環(huán)境優(yōu)先Async-Profiler;2.減少對象創(chuàng)建,復用對象、用StringBuilder替代字符串拼接、選擇合適GC策略;3.優(yōu)化集合使用,根據(jù)場景選型並預設初始容量;4.優(yōu)化並發(fā),使用並發(fā)集合、減少鎖粒度、合理設置線程池;5.調(diào)優(yōu)JVM參數(shù),設置合理堆大小和低延遲垃圾回收器並啟用GC日誌;6.代碼層面避免反射、用基本類型替代包裝類、延遲初始化、使用final和static;7.持續(xù)性能測試與監(jiān)控,結(jié)合JMH

Python Pytest夾具示例 Python Pytest夾具示例 Jul 31, 2025 am 09:35 AM

fixture是用於為測試提供預設環(huán)境或數(shù)據(jù)的函數(shù),1.使用@pytest.fixture裝飾器定義fixture;2.在測試函數(shù)中以參數(shù)形式註入fixture;3.yield之前執(zhí)行setup,之後執(zhí)行teardown;4.通過scope參數(shù)控製作用域,如function、module等;5.將共用fixture放在conftest.py中實現(xiàn)跨文件共享,從而提升測試的可維護性和復用性。

See all articles