一篇文章帶你了解JAVA面對(duì)對(duì)象三大特征之封裝
面對(duì)對(duì)象的三大特征: 封裝、繼承、多態(tài)
封裝
封裝是把客觀事物抽象成類,并且把自己的屬性和方法讓可信的類或?qū)ο蟛僮?,?duì)不可性的隱藏。
繼承
繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無(wú)需重新編寫(xiě)原來(lái)的類的情況下對(duì)這些功能進(jìn)行擴(kuò)展。
1. 繼承得到的新類稱為“子類”或“派生類”。被繼承的父類稱為“基類”、“父類”或“超類”。
2. 繼承的過(guò)程是一個(gè)從一般到特殊的的過(guò)程。
3. 繼承概念的實(shí)現(xiàn)方式有二類:實(shí)現(xiàn)繼承與接口繼承。實(shí)現(xiàn)繼承是指直接使用基類的屬性和方法而無(wú)需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實(shí)現(xiàn)的能力;
多態(tài)
多態(tài)性(polymorphism)是允許你將父對(duì)象設(shè)置成為和一個(gè)或更多的他的子對(duì)象相等的技術(shù),賦值之后,父對(duì)象就可以根據(jù)當(dāng)前賦值給它的子對(duì)象的特性以不同的方式運(yùn)作。這就意味著雖然針對(duì)不同對(duì)象的具體操作不同,但通過(guò)一個(gè)公共的類,它們(那些操作)可以通過(guò)相同的方式予以調(diào)用。
類和對(duì)象
了解封裝之前我們先來(lái)了解什么是類和對(duì)象
關(guān)于類
類是對(duì)象的數(shù)據(jù)類型,類是具有相同屬性和行為的一組對(duì)象的集合。也就是說(shuō),類是對(duì)現(xiàn)實(shí)事物的一種描述,類由屬性和行為組成,
類的步驟 :
- ①定義類
- ②編寫(xiě)類的成員變量
- ③編寫(xiě)類的成員方法
例如代碼 :
/*
手機(jī)類:
類名:
手機(jī)(Phone)
成員變量:
品牌(brand)
價(jià)格(price)
成員方法:
打電話(call)
發(fā)短信(sendMessage)
*/
public class Phone {
//成員變量
String brand;
int price;
//成員方法
public void call() {
System.out.println("打電話");
}
public void sendMessage() {
System.out.println("發(fā)短信");
}
}
關(guān)于對(duì)象
一句話描述就是能夠看得到摸的著的真實(shí)存在的實(shí)體
- 創(chuàng)建對(duì)象的格式:
- 類名 對(duì)象名 = new 類名();
- 調(diào)用成員的格式:
- 對(duì)象名.成員變量
- 對(duì)象名.成員方法();
例如代碼 :
/*
創(chuàng)建對(duì)象
格式:類名 對(duì)象名 = new 類名();
范例:Phone p = new Phone();
使用對(duì)象
1:使用成員變量
格式:對(duì)象名.變量名
范例:p.brand
2:使用成員方法
格式:對(duì)象名.方法名()
范例:p.call()
*/
public class PhoneDemo {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
Phone p = new Phone();
//使用成員變量
System.out.println(p.brand);
System.out.println(p.price);
p.brand = "小米";
p.price = 2999;
System.out.println(p.brand);
System.out.println(p.price);
//使用成員方法
p.call();
p.sendMessage();
}
}
三大特征第一封裝
關(guān)于封裝思想 :
1.封裝概述
是面向?qū)ο笕筇卣髦?br />
是面向?qū)ο缶幊陶Z(yǔ)言對(duì)客觀世界的模擬,客觀世界里成員變量都是隱藏在對(duì)象內(nèi)部的,外界是無(wú)法直接操作的
2.封裝原則
將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問(wèn),而是通過(guò)該類提供的方法來(lái)實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問(wèn)
成員變量private,提供對(duì)應(yīng)的getXxx()/setXxx()方法
3.封裝好處
通過(guò)方法來(lái)控制成員變量的操作,提高了代碼的安全性
把代碼用方法進(jìn)行封裝,提高了代碼的復(fù)用性
private關(guān)鍵字
private是一個(gè)修飾符,可以用來(lái)修飾成員(成員變量,成員方法)
- 被private修飾的成員,只能在本類進(jìn)行訪問(wèn),針對(duì)private修飾的成員變量,如果需要被其他類使用,提供相應(yīng)的操作
- 提供“get變量名()”方法,用于獲取成員變量的值,方法用public修飾
- 提供“set變量名(參數(shù))”方法,用于設(shè)置成員變量的值,方法用public修飾
this關(guān)鍵字
this修飾的變量用于指代成員變量,其主要作用是(區(qū)分局部變量和成員變量的重名問(wèn)題)
- 方法的形參如果與成員變量同名,不帶this修飾的變量指的是形參,而不是成員變量
- 方法的形參沒(méi)有與成員變量同名,不帶this修飾的變量指的是成員變量
圖解

構(gòu)造方法
構(gòu)造方法是一種特殊的方法
- 作用:創(chuàng)建對(duì)象 Student stu = new Student();
- 格式:
public class 類名{
修飾符 類名( 參數(shù) ) {
}
}
- 功能:主要是完成對(duì)象數(shù)據(jù)的初始化
例如代碼 :
class Student {
private String name;
private int age;
//構(gòu)造方法
public Student() {
System.out.println("無(wú)參構(gòu)造方法");
}
public void show() {
System.out.println(name + "," + age);
}
}
/*
測(cè)試類
*/
public class StudentDemo {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
Student s = new Student();
s.show();
}
}
構(gòu)造方法注意事項(xiàng)
構(gòu)造方法的創(chuàng)建:
- a.如果沒(méi)有定義構(gòu)造方法,系統(tǒng)將給出一個(gè)默認(rèn)的無(wú)參數(shù)構(gòu)造方法
- b.如果定義了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的構(gòu)造方法
構(gòu)造方法的重載:
- 如果自定義了帶參構(gòu)造方法,還要使用無(wú)參數(shù)構(gòu)造方法,就必須再寫(xiě)一個(gè)無(wú)參數(shù)構(gòu)造方法
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
spring boot加載第三方j(luò)ar包的配置文件的方法
本篇文章主要介紹了spring boot加載第三方j(luò)ar包的配置文件的方法,詳細(xì)的介紹了spring boot jar包配置文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
詳解如何實(shí)現(xiàn)SpringBoot的底層注解
今天給大家?guī)?lái)的文章是如何實(shí)現(xiàn)SpringBoot的底層注解,文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下2021-06-06
Java實(shí)現(xiàn)文件分割和文件合并實(shí)例
本篇文章主要介紹了Java實(shí)現(xiàn)文件分割和文件合并實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Java實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
spring5 SAXParseException:cvc-elt.1: 找不到元素“beans 的聲明詳解
這篇文章主要給大家介紹了關(guān)于spring5 SAXParseException:cvc-elt.1: 找不到元素“beans 聲明的相關(guān)資料,需要的朋友可以參考下2020-08-08
SpringBoot動(dòng)態(tài)生成接口實(shí)現(xiàn)流程示例講解
最近遇到一個(gè)需求,需要在程序運(yùn)行過(guò)程中,可以動(dòng)態(tài)新增接口,自定義接口參數(shù)名稱,基本類型,以及請(qǐng)求方法,請(qǐng)求頭等等。通過(guò)幾天的研究,找到了我需要的解決方案2023-01-01
SpringBoot+Vue+JWT的前后端分離登錄認(rèn)證詳細(xì)步驟
這篇文章主要介紹了SpringBoot+Vue+JWT的前后端分離登錄認(rèn)證,其實(shí)創(chuàng)建后端springboot工程也很簡(jiǎn)單,本文安裝idea步驟一步步給大家詳細(xì)介紹,需要的朋友可以參考下2021-09-09
淺談Java中@Autowired和@Inject注解的區(qū)別和使用場(chǎng)景
本文主要介紹了淺談Java中@Autowired和@Inject注解的區(qū)別和使用場(chǎng)景,@Autowired注解在依賴查找方式和注入方式上更加靈活,適用于Spring框架中的依賴注入,而@Inject注解在依賴查找方式上更加嚴(yán)格,適用于Java的依賴注入標(biāo)準(zhǔn),感興趣的可以了解一下2023-11-11

