最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java面向?qū)ο蟪绦蛟O(shè)計:類的定義,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝與私有,this概念與用法詳解

 更新時間:2020年04月16日 10:01:02   作者:隨風(fēng)行云  
這篇文章主要介紹了Java面向?qū)ο箢惖亩x,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝與私有,this概念與用法,較為詳細(xì)的分析了Java類的定義,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝,私有等相關(guān)原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了Java面向?qū)ο蟪绦蛟O(shè)計:類的定義,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝與私有,this概念與用法。分享給大家供大家參考,具體如下:

本文內(nèi)容:

  • 什么是面對對象
  • 類的定義與對象實例化
  • 成員變量
    • 成員變量的有效范圍
    • 成員變量的賦值
  • 靜態(tài)變量、方法與實例變量、方法
  • 構(gòu)造函數(shù)
  • 封裝與私有
  • this關(guān)鍵字

注:函數(shù)和方法是一樣?xùn)|西?!居捎谖抑皩W(xué)習(xí)的時候有些書籍不是同樣的說法,書看多了,我就習(xí)慣了不同情況下用不同的說法】

首發(fā)時間:2018-03-22


什么是面對對象:

  • 面向?qū)ο髲娬{(diào)行為處于對象之中,并不直接執(zhí)行行為,而是通過對象執(zhí)行行為
  • 類是對象的抽象,對象是類的具體實例。 【可以說,人是一個類,而不同身份的你我他是一個具體實例。人這個類抽象出了我們?nèi)祟惞灿械膶傩?,而我們?nèi)耸侨祟惖母鞣N屬性的具體實例結(jié)果?!?/li>
  • 面向?qū)ο蟮幕咎卣鳎悍庋b,繼承,多態(tài)
    • 封裝:比如一個對象把它的屬性和方法都封裝起來的話,它執(zhí)行的屬性和方法都是這個對象的,而不是其他對象的。
    • 繼承:子類可以繼承父類的屬性和方法。比如“人類”繼承了“哺乳類”的屬性和方法,又增添人類獨有的屬性和方法。
    • 多態(tài):一種多態(tài)是指同一個操作被不同對象執(zhí)行時有不同的結(jié)果(比如:狗的say是“汪汪汪”,而貓的是"喵喵喵");另一種多態(tài)是根據(jù)對象的傳入而決定執(zhí)行不同的方法?!颈举|(zhì)上這兩個是一樣的】


類的定義與對象實例化:

類的定義:

  • 類的定義包括兩部分:類聲明和類體
  • 類是java程序的基本要素
  • 定義類的格式:image
    • 修飾符可以是public 或空: public代表即使不同包也能訪問該類;而空代表只能該類只能在同一個包內(nèi)訪問。
    • 類體的內(nèi)容包括變量的生命和方法的定義。【所以單獨的定義是錯誤的,只能聲明并同時定義】
      • image
      • image

對象實例化

  • 類的實例化就是創(chuàng)建一個對象:
    • 創(chuàng)建對象:類名 變量名 =new 類名()【類名()可以傳入一些參數(shù)來初始化對象,由類的同名方法(構(gòu)造方法,下面講)定義能傳入什么參數(shù)】
      • image
      • 匿名對象:簡單來說就是沒有變量名的實例化,直接使用new 類名()來執(zhí)行操作,由于沒有變量名來特異的標(biāo)記一片內(nèi)存空間,所以匿名對象一般只使用一次,比如new Dog().hello();
    • 調(diào)用方法或變量:對于實例方法或變量的可以直接使用對象來調(diào)用;而對于靜態(tài)方法或變量,既可以使用對象,也可以使用類來調(diào)用。
      • image
      • image
class Dog{
  String name;
  int foot=4;
  Dog(){//這是一個構(gòu)造函數(shù)
    this.name="旺財";
  }
  void hello() {
    System.out.println("hello,this is a dog");
  }
  static void static_hello() {
    System.out.println("hello,this is a dog too");
  }

}

public class Demo {

  public static void main(String args[]) {
    
    Dog d=new Dog();
    System.out.println(d.foot);//4
    d.hello();//hello,this is a dog
    d.static_hello();//hello,this is a dog too
    Dog.static_hello();//hello,this is a dog too
    
  }
}


成員變量:

成員變量的有效范圍

  • 成員變量在整個類范圍內(nèi)有效,與變量聲明的位置無關(guān)。方法中的局部變量從聲明它的位置開始生效,并且只在方法體內(nèi)有效。
  • 當(dāng)局部變量跟成員變量同名時,如果想特別的使用成員變量,可以使用“this.變量名”
  • 成員變量有默認(rèn)值,而局部變量沒有默認(rèn)值。

成員變量的賦值:

  • 可以使用構(gòu)造函數(shù)來對一些成員變量初始化
  • 如果成員變量不是私有的,也可以直接取得變量名來賦值,比如dog.age=18


靜態(tài)變量、方法與實例變量、方法:

根據(jù)變量、方法是否有static修飾可以分為實例變量,實例方法和靜態(tài)變量(類變量),靜態(tài)方法(類方法)

  • 靜態(tài)變量,靜態(tài)方法:

    • 被static修飾的成員的特點:

      • 隨著類的加載而加載,優(yōu)先于對象存在,靜態(tài)成員內(nèi)存位于方法區(qū)

      • 被所有對象所用享【所以可稱為類變量或類方法】

      • 可以直接類名調(diào)用

      • 靜態(tài)方法只能訪問靜態(tài)成員

      • 靜態(tài)方法中不可以寫this,super關(guān)鍵字

 

  • 實例變量、實例方法:

    • 實例變量、實例方法是對象的變量和方法,對象操作變量或方法也只是操作自己的變量或方法,不會影響其他對象。

實例變量\方法跟靜態(tài)變量\方法的區(qū)別好比:“泰迪狗類”比如有一個共有屬性“狗種類名”,那么這個屬性應(yīng)該是所有泰迪狗都有的,并且是泰迪狗共享的,如果某一天人類想改泰迪狗的種類名稱,那么應(yīng)該是所有泰迪狗都改的(靜態(tài)的);而每一只泰迪狗都有自己的主人,這是由每一只狗自身決定的,所以這是特有屬性,即使這只狗換了主人,也不會影響別的狗。(實例的)


構(gòu)造函數(shù):

  • 構(gòu)造函數(shù)是類中的一種特殊函數(shù),構(gòu)造函數(shù)的名字與類的名字相同,而且沒有類型。
  • 構(gòu)造函數(shù)負(fù)責(zé)對類對象的特定屬性初始化?!颈热缑恳恢还穼ο蠖加胁煌拿郑奉愂且粋€模板,是沒有名字的,而構(gòu)造函數(shù)可以做到給狗定義名字?!?/li>
  • 類中可以有多個構(gòu)造函數(shù),它們以函數(shù)重載的方式存在。
  • 構(gòu)造函數(shù)是沒有類型的,是直接以“ 類名(){}” 作為函數(shù)。
  • 類中會默認(rèn)有一個無參數(shù)的構(gòu)造函數(shù),如果定義了其他構(gòu)造函數(shù),那么這個默認(rèn)的無參構(gòu)造函數(shù)就會不默認(rèn)存在了。
class Dog{
  String name;
  Dog(){
    this.name="旺財";
  }
  Dog(String name){
    this.name=name;
  }
}
public class Init_usage {

  public static void main(String args[]) {
    
    Dog d3=new Dog();
    Dog d4=new Dog("小菜");
    System.out.println(d3.name);
    System.out.println(d4.name);
  }
}

補充:

  • 構(gòu)造函數(shù)之間可以相互調(diào)用,但要防止遞歸調(diào)用。
    • image
    • image
    • 調(diào)用其他構(gòu)造函數(shù)來實現(xiàn)初始化在有多個變量需要初始化的時候有明顯的代碼節(jié)省。


封裝與私有:

  • 類的封裝的一個體現(xiàn)是變量和函數(shù)的私有化
  • 封裝的準(zhǔn)則:
    • 將不需要對外提供的內(nèi)容都隱藏起來。
    • 將屬性都隱藏,提供公共方法對其訪問。
  • 私有化使類的非公共屬性隱藏了起來,比如一個“人類”對象有自己的資產(chǎn),一般只有自己才能知道自己有多少資產(chǎn),并且不想直接給別人看到,但如果別人問題,還是會告訴別人的(隱藏了自己的資產(chǎn)情況,但是自己能夠使用方法獲得結(jié)果,這個方法是開放的,調(diào)用就是相當(dāng)于別人問)。
  • 可以使用private來使變量和函數(shù)私有化,這樣之后不能直接使用 對象.變量 或 對象.函數(shù) 來調(diào)用,只有對象內(nèi)部的方法才能調(diào)用
  • 將變量或方法私有化之后,一般對外提供getXXX,setXXX方法進(jìn)行訪問,提高數(shù)據(jù)訪問的安全性。
class Man{
  private int money;
  String name;
  Man(String name,int money){
    this.name=name;
    this.money=money;
  }
  int getmoney(){
    return money;
  }
  void setMoney(int money){
    this.money=money;
  }
  
}

public class Private_usage {

  public static void main(String[] args) {
    Man m=new Man("lilei",2000);
    System.out.println(m.name);//lilei
//    System.out.println(m.money);//報錯的,因為私有了,不能訪問
//    System.out.println(m.wife);//報錯的,因為私有了,不能訪問
    System.out.println(m.getmoney()); //2000
    m.setMoney(6000);
    System.out.println(m.getmoney());//6000

  }

}


this關(guān)鍵字:

  • this代表當(dāng)前對象(調(diào)用函數(shù)時代表當(dāng)前調(diào)用該函數(shù)的對象),比如在類中可以使用this.XXX來調(diào)用對象自己的變量或方法。
  • 當(dāng)局部變量和成員變量同名時,可以用this關(guān)鍵字區(qū)分,this.XXX代表使用對象自身的變量
  • 類中的成員變量默認(rèn)是帶有this前綴的,但遇到同名時必須加以區(qū)分。

  • this加上參數(shù)列表(this(參數(shù)))的方式就是訪問本類中符合該參數(shù)的構(gòu)造函數(shù)

  • 用于調(diào)用構(gòu)造函數(shù)的this語句必須放在第一行,因為初始化動作要優(yōu)先執(zhí)行

class Person{
  String name;
  int age;
  Person(String name,int age){
    this.name=name;
    this.age=age;
  }
  void hello() {
    this.sysprint();
//    sysprint();
  }
  void sysprint() {
    System.out.println("hello world!");
  }
}

public class This_usage {
  public static void main(String args[]) {
    Person p1=new Person("lilei",18);
    p1.hello();//hello world!
    
  }

}

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • SpringCloud-Gateway網(wǎng)關(guān)的使用實例教程

    SpringCloud-Gateway網(wǎng)關(guān)的使用實例教程

    Gateway網(wǎng)關(guān)在微服務(wù)架構(gòu)中扮演了不可或缺的角色,通過集中化管理、智能路由和強大的過濾器機制,為構(gòu)建高效、可擴展的微服務(wù)系統(tǒng)提供了有力支持,這篇文章主要介紹了SpringCloud-Gateway網(wǎng)關(guān)的使用,需要的朋友可以參考下
    2024-03-03
  • 詳解Java中的File文件類以及FileDescriptor文件描述類

    詳解Java中的File文件類以及FileDescriptor文件描述類

    在Java中File類可以用來新建文件和目錄對象,而FileDescriptor類則被用來表示文件或目錄的可操作性,接下來我們就來詳解Java中的File文件類以及FileDescriptor文件描述類
    2016-06-06
  • springboot docker jenkins 自動化部署并上傳鏡像的步驟詳解

    springboot docker jenkins 自動化部署并上傳鏡像的步驟詳解

    這篇文章主要介紹了springboot docker jenkins 自動化部署并上傳鏡像的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 基于MyBatis的關(guān)聯(lián)查詢優(yōu)化與應(yīng)用實踐

    基于MyBatis的關(guān)聯(lián)查詢優(yōu)化與應(yīng)用實踐

    在實際項目開發(fā)中,關(guān)聯(lián)查詢是一種常見的需求,尤其是當(dāng)涉及到多個表之間的數(shù)據(jù)統(tǒng)計、關(guān)聯(lián)查詢以及嵌套對象的構(gòu)建時,如何確保數(shù)據(jù)的準(zhǔn)確性和實時性,是開發(fā)者必須面對的挑戰(zhàn),本文將介紹基于MyBatis的關(guān)聯(lián)查詢優(yōu)化與應(yīng)用實踐,需要的朋友可以參考下
    2024-12-12
  • 基于Spring MVC的文件上傳和下載實現(xiàn)方法

    基于Spring MVC的文件上傳和下載實現(xiàn)方法

    在Web應(yīng)用程序中,文件上傳和下載是常見的功能,Spring MVC框架提供了方便的方式來實現(xiàn)這些功能,本文將介紹如何使用Spring MVC實現(xiàn)文件上傳和下載,需要的朋友可以參考下
    2023-05-05
  • SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解

    SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解

    這篇文章主要介紹了SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解,ApplicationListener是應(yīng)用程序的事件監(jiān)聽器,繼承自java.util.EventListener標(biāo)準(zhǔn)接口,采用觀察者設(shè)計模式,需要的朋友可以參考下
    2023-11-11
  • 詳解Java Spring各種依賴注入注解的區(qū)別

    詳解Java Spring各種依賴注入注解的區(qū)別

    這篇文章主要介紹了詳解Java Spring各種依賴注入注解的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • java實現(xiàn)24點游戲

    java實現(xiàn)24點游戲

    每次取出4張牌,使用加減乘除,第一個能得出24者為贏,這篇文章主要就為大家詳細(xì)介紹了java實現(xiàn)24點游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Spring?@InitBinder注解使用及原理詳解

    Spring?@InitBinder注解使用及原理詳解

    這篇文章主要為大家介紹了Spring?@InitBinder注解使用及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Spring Boot加密配置文件方法介紹

    Spring Boot加密配置文件方法介紹

    這篇文章主要介紹了SpringBoot加密配置文件,近期在對開發(fā)框架安全策略方面進(jìn)行升級優(yōu)化,提供一些通用場景的解決方案,本文針對配置文件加密進(jìn)行簡單的分享
    2023-01-01

最新評論

包头市| 吉林市| 栾城县| 木兰县| 海伦市| 本溪| 小金县| 宣威市| 民县| 天镇县| 伊宁市| 银川市| 平阴县| 安庆市| 闸北区| 青神县| 景谷| 肥城市| 察雅县| 辽阳县| 华宁县| 滦平县| 岱山县| 周口市| 三穗县| 南宫市| 昆山市| 应城市| 山阴县| 潜山县| 沂水县| 广东省| 枣阳市| 洛浦县| 纳雍县| 班戈县| 建水县| 谢通门县| 南木林县| 台湾省| 西贡区|