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

Java 中的類和對(duì)象詳情

 更新時(shí)間:2021年11月08日 15:41:46   作者:CDFMLR  
這篇文章主要介紹了Java 中的類和對(duì)象,類可以看成是創(chuàng)建Java對(duì)象的模板,下面文章圍繞著Java 類與對(duì)象詳細(xì)內(nèi)容展開(kāi),需要的朋友可以參考一下

類可以看成是創(chuàng)建Java對(duì)象的模板

1、類的定義

public class Dog {
    String name;
    int age;

    void eat() {
    }
    void sleep() {
    }
}

2、類中變量的類型

局部變量:在方法或語(yǔ)句塊中定義的變量被稱為局部變量。變量聲明和初始化都是在方法中,方法結(jié)束后,變量就會(huì)自動(dòng)銷毀。

成員變量(實(shí)例變量):成員變量是定義在類中,方法體之外的變量。這種變量在創(chuàng)建對(duì)象的時(shí)候?qū)嵗3蓡T變量可以被類中方法、構(gòu)造方法和特定類的語(yǔ)句塊訪問(wèn)。

類變量:類變量也聲明在類中,方法體之外,但必須聲明為 static 類型。

3、構(gòu)造方法

構(gòu)造方法的名稱必須與類同名,一個(gè)類可以有多個(gè)構(gòu)造方法。

在創(chuàng)建一個(gè)對(duì)象的時(shí)候,至少要調(diào)用一個(gè)構(gòu)造方法。 如果沒(méi)有顯式地為類定義構(gòu)造方法,Java編譯器將會(huì)為該類提供一個(gè)默認(rèn)構(gòu)造方法。

public class Dog {
 public Dog() {
  System.out.println("構(gòu)造Dog");
 }
}

4、重載方法

創(chuàng)建兩個(gè)具有相同名稱和不同參數(shù)列表(即不同的參數(shù)數(shù)量或類型)的方法時(shí),就擁有了一個(gè)重載 方法。

在運(yùn)行時(shí),JRE 基于傳遞給它的參數(shù)來(lái)決定調(diào)用您的重載方法的哪個(gè)變體。

我們甚至可以在一個(gè)方法中調(diào)用另一個(gè)同名的重載方法。

但要注意:在使用重載方法時(shí),

  • 不能僅通過(guò)更改一個(gè)方法的返回類型來(lái)重載它。
  • 不能擁有兩個(gè)具有相同名稱和相同參數(shù)列表的方法。

5、繼承

要表示一個(gè)類繼承自某一個(gè)超類,我們可以在聲明類時(shí),在 className 后加上 extends,

例如:

public class Employee extends Person {
  // Employee 繼承自 Person
  public Employee() {
    super();
    }
  
    public Employee(String name, int age, int height, int weight,
  String eyeColor, String gender) {
        super(name, age, height, weight, eyeColor, gender);
  }
}

在構(gòu)造函數(shù)中,調(diào)用 super([args]) 來(lái)初始化父類。

5.1 重寫方法

如果一個(gè)子類提供其父類中定義的方法的自有實(shí)現(xiàn),這被稱為方法重寫。

重寫的形式類似于重載,但需要加上一個(gè) @Override。例如,當(dāng)父類中有一個(gè) foo() 方法時(shí),我們可以在子類中這樣重寫它:

@Override
public int foo() {
 // TODO Auto-generated method stub
 return super.foo();
}

【注】這段代碼是使用 Eclipse 自動(dòng)生成的,它只是調(diào)用了父類中的方法(super.foo()),沒(méi)有任何改變,但實(shí)際中我們不會(huì)這么使用。

重寫后,在類中直接使用 method()調(diào)用重寫后的函數(shù),但我們?nèi)稳豢梢酝ㄟ^(guò) super.method() 調(diào)用父類中的(重寫前的)方法。

6、創(chuàng)建對(duì)象

對(duì)象是根據(jù)類創(chuàng)建的。 創(chuàng)建對(duì)象需要以下三步:

  • 聲明:聲明一個(gè)對(duì)象,包括對(duì)象名稱和對(duì)象類型。
  • 實(shí)例化:使用關(guān)鍵字 new 來(lái)創(chuàng)建一個(gè)對(duì)象。
  • 初始化:使用 new 創(chuàng)建對(duì)象時(shí),會(huì)調(diào)用構(gòu)造方法初始化對(duì)象。
public class Dog {
 public static void main(String[] args) {
  Dog Dog0 = new Dog();
 }
}

7、訪問(wèn)實(shí)例變量和方法

  • 訪問(wèn)實(shí)例的變量:實(shí)例名.變量名
  • 調(diào)用實(shí)例的方法:實(shí)例名.方法名()
public class Dog {
 String name;
 int age;

 void eat(String food) {
  System.out.println(name + " is eating " + food + ".");
 }

 public Dog() {
  name = "Dog";
  age = 0;

  System.out.println("構(gòu)造():");
  System.out.println(name + "\t" + age);
 }
 public Dog(String dogName, int dogAge) {
  name = dogName;
  age = dogAge;
  System.out.println("構(gòu)造(name, age):");
  System.out.println(name + "\t" + age);
 }

 public static void main(String[] args) {
  Dog Dog0 = new Dog();
  Dog Dog1 = new Dog("FooBar", 3);

  // 訪問(wèn)變量 
  Dog0.name = "Ana";
  System.out.println(Dog0.name);

  // 訪問(wèn)方法
  Dog1.eat("cat");

 }
}

運(yùn)行👆上面代碼將輸出:

構(gòu)造():
Dog 0
構(gòu)造(name, age):
FooBar 3
Ana
FooBar is eating cat.

8、比較對(duì)象

Java 語(yǔ)言提供了兩種比較對(duì)象的方法:

  • == 運(yùn)算符
  • equals() 方法

8.1 使用 == 比較對(duì)象

== 語(yǔ)法比較對(duì)象是否相等,只有在 ab 相等時(shí),a == b 才返回 true。

對(duì)于內(nèi)置基本類型,需要它們的值相等。

對(duì)于對(duì)象,需要兩個(gè)對(duì)象引用同一個(gè)對(duì)象實(shí)例。

例如:

import java.util.logging.Logger;

public class Equals {
 public static void main(String[] args) {
  Logger l = Logger.getLogger("Test");

  int i = 12,
   j = 12,
   k = 99;
        
  Integer a = new Integer(12);
  Integer b = a;
  Integer c = new Integer(12);

  l.info("i == j: " + (i == j));
  l.info("i == k: " + (i == k));

  l.info("a == b: " + (a == b));
  l.info("a == c: " + (a == c));
 }
}

運(yùn)行這段代碼將得到如下結(jié)果:

i == j: true
i == k: false
a == b: true
a == c: false

【注】若使用 a = Integer.valueOf(12); 與 c = Integer.valueOf(12); 分別得到 a 和 c,則 a == c 將是 true !

8.2 使用 equals() 比較對(duì)象

equals() 是每種 Java 語(yǔ)言對(duì)象都可以自由使用的方法,因?yàn)樗欢x為 java.lang.Object 的一個(gè)實(shí)例方法(每個(gè) Java 對(duì)象都繼承該對(duì)象)。

調(diào)用 equals() 的方法如下:

a.equals(b);

此語(yǔ)句調(diào)用對(duì)象 aequals() 方法,向它傳遞對(duì)象 b 的引用。

默認(rèn)情況下,Java 程序使用 == 語(yǔ)法檢查兩個(gè)對(duì)象是否相同。但是因?yàn)?code> equals() 是一種方法,所以它可以被重寫。這樣,對(duì)于任何對(duì)象,我們都可定義適合的 equals() 的含義。

【注】在重寫 equals() 時(shí),我們可以利用 object.hashCode()( to return a hash code value for the object.)

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

相關(guān)文章

  • Java訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例詳解

    Java訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Java訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Spring和Mybatis整合的原理詳解

    Spring和Mybatis整合的原理詳解

    這篇文章主要介紹了Spring和Mybatis整合的原理詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • java數(shù)據(jù)結(jié)構(gòu)和算法之馬踏棋盤算法

    java數(shù)據(jù)結(jié)構(gòu)和算法之馬踏棋盤算法

    這篇文章主要為大家詳細(xì)介紹了java數(shù)據(jù)結(jié)構(gòu)和算法之馬踏棋盤算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java Fluent Mybatis 聚合查詢與apply方法詳解流程篇

    Java Fluent Mybatis 聚合查詢與apply方法詳解流程篇

    Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國(guó)內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個(gè)新的mybatis增強(qiáng)框架 fluent mybatis關(guān)于聚合查詢、apply方法詳解
    2021-10-10
  • mybatis-plus 如何配置邏輯刪除

    mybatis-plus 如何配置邏輯刪除

    這篇文章主要介紹了mybatis-plus 如何配置邏輯刪除,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java基礎(chǔ)之堆內(nèi)存溢出的解決

    Java基礎(chǔ)之堆內(nèi)存溢出的解決

    這篇文章主要介紹了Java基礎(chǔ)之堆內(nèi)存溢出的解決,文中有非常詳細(xì)的圖文示例及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Netty中序列化的作用及自定義協(xié)議詳解

    Netty中序列化的作用及自定義協(xié)議詳解

    這篇文章主要介紹了Netty中序列化的作用及自定義協(xié)議詳解,Netty自身就支持很多種協(xié)議比如Http、Websocket等等,但如果用來(lái)作為自己的RPC框架通常會(huì)自定義協(xié)議,所以這也是本文的重點(diǎn),需要的朋友可以參考下
    2023-12-12
  • idea激活A(yù)ctivateJrebel熱部署的方法詳解

    idea激活A(yù)ctivateJrebel熱部署的方法詳解

    這篇文章主要介紹了idea激活A(yù)ctivateJrebel熱部署的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 幾種常見(jiàn)mybatis分頁(yè)實(shí)現(xiàn)方式

    幾種常見(jiàn)mybatis分頁(yè)實(shí)現(xiàn)方式

    這篇文章主要介紹了幾種常見(jiàn)mybatis分頁(yè)實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 淺談Java設(shè)計(jì)模式之七大設(shè)計(jì)原則

    淺談Java設(shè)計(jì)模式之七大設(shè)計(jì)原則

    在此之前,我已經(jīng)寫過(guò)很多篇關(guān)于設(shè)計(jì)模式的文章.但都比較草草的理解和簡(jiǎn)單的實(shí)現(xiàn),并未深入理解.為了更加深入感受Java設(shè)計(jì)的魅力,編程的藝術(shù),今天進(jìn)行了七大設(shè)計(jì)原則的學(xué)習(xí)理解,后續(xù)進(jìn)行23種設(shè)計(jì)模式的深入學(xué)習(xí)探究,需要的朋友可以參考下
    2021-05-05

最新評(píng)論