欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中類和對象的詳細介紹

 更新時間:2021年03月05日 15:27:08   作者:滿眼*星辰  
這篇文章主要給大家介紹了關(guān)于java中類和對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

面向過程和面向?qū)ο?/h3>
  • C語言是面向過程的,關(guān)注的是過程,分析出求解問題的步驟,通過函數(shù)調(diào)用逐步解決問題。
  • JAVA是基于面向?qū)ο蟮模P(guān)注的是對象,將一件事情拆分成不同的對象,靠對象之間的交互完成。
  • 面向過程注重的是過程,在整個過程中所涉及的行為,就是功能。
  • 面向?qū)ο笞⒅氐氖菍ο?,也就是參與過程所涉及到的主體。是通過邏輯將一個個功能實現(xiàn)連接起來

【面向?qū)ο蟾拍睢?/p>

  1. 面向?qū)ο笫撬伎紗栴}的一種思考方式,是一種思想。比如:概念與實例。理論與實踐。名和實等等。
  2. 類就是一類對象的統(tǒng)稱。對象就是這一類具體化的一個實例
  3. 面向?qū)ο蟮暮锰帲簩?fù)雜的事情變簡單了,只要面對一個對象就行。

【面向?qū)ο笤O(shè)計】

面向?qū)ο笤O(shè)計把握一個重要的經(jīng)驗:誰擁有數(shù)據(jù),誰對外提供操作這些數(shù)據(jù)(私有)的方法!(被動的一方是數(shù)據(jù)的擁有者,主動的一方是執(zhí)行者)

開發(fā)時:找對象,建對象,用對象,并維護對象之間的關(guān)系。

總結(jié):面向?qū)ο缶褪怯么a(類)來描述客觀世界的事物的一種方式. 一個類主要包含一個事物的屬性和行為

類和類的實例化

類就是一類對象的統(tǒng)稱。對象就是這一類具體化的一個實例

一個類可以實例化無數(shù)個對象

下面我們通過一個例子了解類和類的實例化

class Person {
 public int age;//成員屬性 實例變量 字段 屬性
 public String name;
 public static String sex; //靜態(tài)成員變量 方法區(qū)
 public void eat() {//成員方法
 System.out.println("吃飯!");
 }
 public void sleep() {
 System.out.println("睡覺!");
 }
 public static void func(){
 	System.out.println("靜態(tài)成員方法");
 }
}
public class Main{
 public static void main(String[] args) {
 Person person = new Person();//通過new實例化對象
 person.eat();//成員方法調(diào)用需要通過對象的引用調(diào)用
 person.sleep();
//產(chǎn)生對象 實例化對象
 Person person2 = new Person();
 Person person3 = new Person();

		//靜態(tài)成員變量和方法的調(diào)用
		System.out.println(Person.sex);
		Person.func();
 }
}

成員變量:

定義在類的內(nèi)部,方法的外部

通過對象的引用來訪問

如果沒有初始化,那么它的值就是一個默認默認值(默認零值)

  • 如果是引用類型,那么值就是null(包括數(shù)組,String字符串等)
  • 如果是簡單類型,那么值就是其這種類型所對應(yīng)的默認值
byte short int long float double char boolean
0 0 0 0L 0.0f 0.0 '\u0000'十六進制(也可以當(dāng)作0) false

行為/方法:

【eat() sleep()】為實例成員方法

func()為靜態(tài)成員方法

對于靜態(tài)的成員變量和成員方法該該怎么訪問呢

這里可以看到,對于靜態(tài)的,不需要實例化對象?。?!

直接調(diào)用

類名.靜態(tài)成員變量/靜態(tài)成員方法

總結(jié)static:

  • 對于靜態(tài)的成員屬性或者靜態(tài)的成員方法,是不依賴于對象的。
  • 靜態(tài)的成員變量 ,只有一份,存儲在方法區(qū)中。
  • 靜態(tài)的方法內(nèi)部是不可以訪問非靜態(tài)的數(shù)據(jù)的。

實例化類的存儲結(jié)構(gòu)

初始化成員變量的方式

1、就地初始化(在類內(nèi)進攻初始化)

2、默認初始化

3、類外初始化(用的比較多)

public class Main{
 public static void main(String[] args) {
 Person person1 = new Person();
 person1.name = "星星";
 person1.age = 20;

 Person person2 = new Person();
 person2.name = "狒狒";
 person2.age = 40;
 }
}

封裝

在我們寫代碼的時候經(jīng)常會涉及兩種角色: 類的實現(xiàn)者和類的調(diào)用者. 封裝的本質(zhì)就是讓類的調(diào)用者不必太多的了解類的實現(xiàn)者是如何實現(xiàn)類的,只要知道如何使用類就行了.

這樣就降低了類使用者的學(xué)習(xí)和使用成本, 從而降低了復(fù)雜程度

private/ public 這兩個關(guān)鍵字表示 “訪問權(quán)限控制” .

  • 被 public 修飾的成員變量或者成員方法, 可以直接被類的調(diào)用者使用.
  • 被 private 修飾的成員變量或者成員方法,不能被類的調(diào)用者使用

舉個例子

class Person {
 private String name = "張三";
 private int age = 18;
 public void show() {
  System.out.println("我叫" + name + ", 今年" + age + "歲");
 }
}
class Test {
 public static void main(String[] args) {
  Person person = new Person();
  person.show();
 }
}
  • 此時字段已經(jīng)使用 private 來修飾. 類的調(diào)用者(main方法中)不能直接使用. 而需要借助 show 方法. 此時類的使用者就不必了解 Person 類的實現(xiàn)細節(jié).
  • 同時如果類的實現(xiàn)者修改了字段的名字, 類的調(diào)用者不需要做出任何修改(類的調(diào)用者根本訪問不到 name, age這樣的字段)

getter和setter方法

getter:得到屬性值的方法

setter:修改屬性值的方法

我們用這兩者方法將類的屬性封裝起來,從而來達到訪問屬性的目的

class Person {
 private String name;//實例成員變量
 private int age;
 public void setName(String name){
//name = name;//不能這樣寫
  this.name = name;//this引用,表示調(diào)用該方法的對象
 }
 public String getName(){
  return name;
 }
 public void show(){
  System.out.println("name: "+name+" age: "+age);
 }
}
class Main {
 public static void main(String[] args) {
  Person person = new Person();
  person.setName("caocao");
  String name = person.getName();
  System.out.println(name);
  person.show();
 }
}

this關(guān)鍵字

我們在剛才的代碼可以看到setter方法

private String name;
public void setName(String name){
		//name = name;//不能這樣寫
  this.name = name;//this引用,表示調(diào)用該方法的對象
}

this表示當(dāng)前對象引用, 可以借助 this 來訪問對象的字段和方法

三個用法:

  • this.屬性; //訪問當(dāng)前對象的屬性
  • this.方法;//調(diào)用當(dāng)前對象的方法
  • this(); //調(diào)用當(dāng)前對象的構(gòu)造方法 (ps:必須放在第一行,且只能存在一個構(gòu)造方法內(nèi)部)

構(gòu)造方法

構(gòu)造方法是一種特殊方法, 使用關(guān)鍵字new實例化新對象時會被自動調(diào)用, 用于完成初始化操作

實例化一個對象/創(chuàng)建一個對象分幾步

Student stu = new Student() ;//實例化一個對象

兩步

  1. 為對象分配內(nèi)存
  2. 調(diào)用合適的構(gòu)造方法,說明構(gòu)造方法不止一個,可能更多

語法規(guī)則

  1. 方法名稱必須與類名稱相同
  2. 構(gòu)造方法沒有返回值類型聲明
  3. 每一個類中一定至少存在一個構(gòu)造方法(沒有明確定義,則系統(tǒng)自動生成一個無參構(gòu)造)
class Person {
 private String name;//實例成員變量
 private int age;
 private String sex;
 //默認構(gòu)造函數(shù) 構(gòu)造對象
 public Person() {
  this.name = "caocao";
  this.age = 10;
  this.sex = "男";
 }
 //帶有3個參數(shù)的構(gòu)造函數(shù)
 public Person(String name,int age,String sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
 }
 public void show(){
  System.out.println("name: "+name+" age: "+age+" sex: "+sex);
 }
}
public class Main{
 public static void main(String[] args) {
  Person p1 = new Person();//調(diào)用不帶參數(shù)的構(gòu)造函數(shù) 如果程序沒有提供會調(diào)用不帶參數(shù)的構(gòu)造函數(shù)
  p1.show();
  Person p2 = new Person("zhangfei",80,"男");//調(diào)用帶有3個參數(shù)的構(gòu)造函數(shù)
  p2.show();
 }
}

toString方法

  Person person = new Person("caocao",19);
  System.out.println(person);

如果打印引用,他會默認調(diào)用toString方法,執(zhí)行這樣一個結(jié)果:

我們可以重寫toString方法,來打印自己想要的結(jié)果

例如:

class Person {
 private String name;
 private int age;
 public Person(String name,int age) {
  this.age = age;
  this.name = name;
 }
 public void show() {
  System.out.println("name:"+name+" " + "age:"+age);
 }
 //重寫Object的toString方法
 @Override
 public String toString() {
  return "Person{" +
    "name='" + name + '\'' +
    ", age=" + age +
    '}';
 }
}

public class Main {
 public static void main(String[] args) {
  Person person = new Person("caocao",19);
  person.show();
  System.out.println(person);
 }
}

這樣打印引用的化,就會按照想要的內(nèi)容進行輸出。

匿名對象

匿名只是表示沒有名字的對象.

  • 沒有引用的對象稱為匿名對象.
  • 匿名對象只能在創(chuàng)建對象時使用.
  • 如果一個對象只是用一次, 后面不需要用了, 可以考慮使用匿名對象
new Person("caocao",19).show();//通過匿名對象調(diào)用方法

特點:不依賴于對象,我們只需要通過類名就可以調(diào)用其屬性或者方法

代碼塊

  • 本地代碼塊
  • 靜態(tài)代碼塊
  • 實例代碼塊/構(gòu)造代碼塊
  • 同步代碼塊(多線程)

本地代碼塊: 在方法中的代碼塊

public class Main{
 public static void main(String[] args) {
  { //直接使用{}定義,普通方法塊
   int x = 10 ;
   System.out.println("x1 = " +x);
  }
  int x = 100 ;
  System.out.println("x2 = " +x);
 }
}

靜態(tài)代碼塊: 一般用于初始化靜態(tài)成員屬性

//靜態(tài)代碼塊
static {
count = 10;//只能訪問靜態(tài)數(shù)據(jù)成員
System.out.println("I am static init()!");
}

實例代碼塊: 定義在類中的代碼塊,構(gòu)造代碼塊一般用于初始化實例成員變量

//實例代碼塊
{
this.name = "bit";
this.age = 12;
this.sex = "man";
System.out.println("I am instance init()!");
}

執(zhí)行順序

靜態(tài)代碼塊實例代碼塊構(gòu)造方法

總結(jié)

到此這篇關(guān)于java中類和對象的文章就介紹到這了,更多相關(guān)java類和對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot配置元數(shù)據(jù)方法教程

    Spring Boot配置元數(shù)據(jù)方法教程

    這篇文章主要介紹了Spring Boot配置元數(shù)據(jù)方法教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式

    SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式

    這篇文章主要介紹了SpringBoot配置文件中系統(tǒng)環(huán)境變量存在特殊字符的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • VSCode+Gradle搭建Java開發(fā)環(huán)境實現(xiàn)

    VSCode+Gradle搭建Java開發(fā)環(huán)境實現(xiàn)

    這篇文章主要介紹了VSCode+Gradle搭建Java開發(fā)環(huán)境實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 使用mybatis-plus想要修改某字段為null問題

    使用mybatis-plus想要修改某字段為null問題

    這篇文章主要介紹了使用mybatis-plus想要修改某字段為null問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 啟用springboot security后登錄web頁面需要用戶名和密碼的解決方法

    啟用springboot security后登錄web頁面需要用戶名和密碼的解決方法

    這篇文章主要介紹了啟用springboot security后登錄web頁面需要用戶名和密碼的解決方法,也就是使用默認用戶和密碼登錄的操作方法,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Java 集合去重的三種方法

    Java 集合去重的三種方法

    本主要介紹了Java 集合去重的三種方法,包含HashSet,Stream API和手動遍歷并使用Map三種,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • 淺談Java自動裝箱與拆箱及其陷阱

    淺談Java自動裝箱與拆箱及其陷阱

    下面小編就為大家?guī)硪黄獪\談Java自動裝箱與拆箱及其陷阱。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 解決Spring Batch框架job任務(wù)只跑一次的問題

    解決Spring Batch框架job任務(wù)只跑一次的問題

    這篇文章主要介紹了解決Spring Batch框架job任務(wù)只跑一次的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot配置文件中使用${}注入值的兩種方式小結(jié)

    springboot配置文件中使用${}注入值的兩種方式小結(jié)

    這篇文章主要介紹了springboot配置文件中使用${}注入值的兩種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java 中String StringBuilder 與 StringBuffer詳解及用法實例

    Java 中String StringBuilder 與 StringBuffer詳解及用法實例

    這篇文章主要介紹了Java 中String StringBuilder 與 StringBuffer詳解及用法實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論