国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java ---一些關(guān)鍵字

這篇具有很好參考價值的文章主要介紹了Java ---一些關(guān)鍵字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

(一)this和super關(guān)鍵字

? Ⅰ??this

?①含義:

this:當(dāng)前對象

  • 在構(gòu)造器和非靜態(tài)代碼塊中,表示正在new的對象

  • 在實(shí)例方法中,表示調(diào)用當(dāng)前方法的對象

②this用法:

  • this.成員變量:表示當(dāng)前對象的某個成員變量,而不是局部變量

  • this.成員方法:表示當(dāng)前對象的某個成員方法,完全可以省略this.

  • this()或this(實(shí)參列表):調(diào)用另一個構(gòu)造器協(xié)助當(dāng)前對象的實(shí)例化,只能在構(gòu)造器首行,只會找本類的構(gòu)造器,找不到就報錯

Ⅱ super

①含義:

super:引用父類聲明的成員

? ? ? ?無論是this和super都是和對象有關(guān)的。

②super的用法:

  • super.成員變量:表示當(dāng)前對象的某個成員變量,該成員變量在父類中聲明的

  • super.成員方法:表示當(dāng)前對象的某個成員方法,該成員方法在父類中聲明的

  • super()或super(實(shí)參列表):調(diào)用父類的構(gòu)造器協(xié)助當(dāng)前對象的實(shí)例化,只能在構(gòu)造器首行,只會找直接父類的對應(yīng)構(gòu)造器,找不到就報錯

?Ⅲ?this和super關(guān)鍵字的用處?

?⒈解決成員變量重名問題

具體做法:?

  • ① 如果實(shí)例變量與局部變量重名,可以在實(shí)例變量前面加this.進(jìn)行區(qū)別。

  • ② 如果子類實(shí)例變量和父類實(shí)例變量重名,并且父類的該實(shí)例變量在子類仍然可見,在子類中要訪問父類聲明的實(shí)例變量需要在父類實(shí)例變量前加super.,否則默認(rèn)訪問的是子類自己聲明的實(shí)例變量。

  • ③ 如果父子類實(shí)例變量沒有重名,只要權(quán)限修飾符允許,在子類中完全可以直接訪問父類中聲明的實(shí)例變量,也可以用this.實(shí)例訪問,也可以用super.實(shí)例變量訪問。

?具體代碼:

class Father{
	int a = 10;
	int b = 11;
}
class Son extends Father{
	int a = 20;
    
    public void test(){
		//子類與父類的屬性同名,子類對象中就有兩個a
		System.out.println("子類的a:" + a);//20  先找局部變量找,沒有再從本類成員變量找
        System.out.println("子類的a:" + this.a);//20   先從本類成員變量找
        System.out.println("父類的a:" + super.a);//10    直接從父類成員變量找
		
		//子類與父類的屬性不同名,是同一個b
		System.out.println("b = " + b);//11  先找局部變量找,沒有再從本類成員變量找,沒有再從父類找
		System.out.println("b = " + this.b);//11   先從本類成員變量找,沒有再從父類找
		System.out.println("b = " + super.b);//11  直接從父類局部變量找
	}
	
	public void method(int a, int b){
		//子類與父類的屬性同名,子類對象中就有兩個成員變量a,此時方法中還有一個局部變量a		
		System.out.println("局部變量的a:" + a);//30  先找局部變量
        System.out.println("子類的a:" + this.a);//20  先從本類成員變量找
        System.out.println("父類的a:" + super.a);//10  直接從父類成員變量找

        System.out.println("b = " + b);//13  先找局部變量
		System.out.println("b = " + this.b);//11  先從本類成員變量找
		System.out.println("b = " + super.b);//11  直接從父類局部變量找
    }
}
class Test{
    public static void main(String[] args){
        Son son = new Son();
		son.test();
		son.method(30,13);  
    }
}

總結(jié):

  • 變量前面沒有super.和this.

    • 在構(gòu)造器、代碼塊、方法中如果出現(xiàn)使用某個變量,先查看是否是——當(dāng)前塊——聲明的 局部變量 ,

    • 如果不是局部變量,先從當(dāng)前執(zhí)行代碼的? 本類去找成員變量?

    • 如果從當(dāng)前執(zhí)行代碼的本類中沒有找到,會往上找——父類聲明的成員變量 (權(quán)限修飾符允許在子類中訪問的)

  • 變量前面有this.

    • 通過this找成員變量時,先從當(dāng)前執(zhí)行代碼的——本類去找成員變量?

    • 如果從當(dāng)前執(zhí)行代碼的本類中沒有找到,會往上找——父類聲明的成員變量(權(quán)限修飾符允許在子類中訪問的)

  • 變量前面super.

    • 通過super找成員變量,直接從當(dāng)前執(zhí)行代碼的直接父類去找成員變量(權(quán)限修飾符允許在子類中訪問的)

    • 如果直接父類沒有,就去父類的父類中找(權(quán)限修飾符允許在子類中訪問的)

?⒉?解決成員方法重寫后調(diào)用問題

?具體做法:

  • 如果子類沒有重寫父類的方法,只有權(quán)限修飾符運(yùn)行,在子類中完全可以直接調(diào)用父類的方法;

  • 如果子類重寫了父類的方法,在子類中需要通過super.才能調(diào)用父類被重寫的方法,否則默認(rèn)調(diào)用的子類重寫的方法? ?

??具體代碼:


class Father{
    int a = 10;
    int b = 11;
    public int getA() {
        return a;
    }
}
class Son extends Father{
    int a = 20;
    public int getA() {
        return a;
    }
    public void test(){
        System.out.println(getA());//10  本類沒有找父類,執(zhí)行父類中的getNum()
        System.out.println(this.getA());//10  本類沒有找父類,執(zhí)行父類中的getNum()
        System.out.println(super.getA());//10  本類沒有找父類,執(zhí)行父類中的getNum()
    }
}
 
class Test{
    public static void main(String[] args){
        Son son = new Son();
        son.test();
      
       /* 20
        20
        10        */
    }
}

總結(jié):

  • 方法前面沒有super.和this.

    • 先從子類找匹配方法,如果沒有,再從直接父類找,再沒有,繼續(xù)往上追溯

  • 方法前面有this.

    • 先從子類找匹配方法,如果沒有,再從直接父類找,再沒有,繼續(xù)往上追溯

  • 方法前面有super.

    • 從當(dāng)前子類的直接父類找,如果沒有,繼續(xù)往上追溯

(二)final關(guān)鍵字?

? ? final(最終的,不可更改的 ),在java中final可修飾類(表示這個類不能被繼承,沒有子類 ),方法(表示這個方法不能被子類重寫 ),變量(final修飾某個變量(成員變量或局部變量),表示它的值就不能被修改,即常量,常量名建議使用大寫字母)。

? ? ?為什么用final關(guān)鍵字呢?:不想讓你繼承。

?具體代碼:



  class Test {

    public static void main(String[] args){
        final int MIN_SCORE = 0;
        final int MAX_SCORE = 100;

        MyDate m1 = new MyDate();
        System.out.println(m1.getInfo());

        MyDate m2 = new MyDate(2022,2,14);
        System.out.println(m2.getInfo());
    }
}
final class MyDate{
    //沒有set方法,必須有顯示賦值的代碼
    private final int year;
    private final int month;
    private final int day;

    public MyDate(){
        year = 1970;
        month = 1;
        day = 1;
    }

    public MyDate(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int getYear() {
        return year;
    }

    public int getMonth() {
        return month;
    }

    public int getDay() {
        return day;
    }

    public String getInfo(){
        return year + "年" + month + "月" + day + "日";
    }
}
//public class CC extends MyDate{} Cannot inherit from final 'MyDate'

(三)native關(guān)鍵字

①定義:

? ? ? native(本地的),在Java中native只能修飾方法,表示這個方法的方法體代碼不是用Java語言實(shí)現(xiàn)的,而是由C/C++語言編寫的。但是對于Java程序員來說,可以當(dāng)做Java的方法一樣去正常調(diào)用它,或者子類重寫它。

??

②用途:

它只能用在一個地方,方法的返回值類型前面,作為方法的一個修飾符。

③作用:

用它修飾方法,在.java中看不到這個方法的方法體。

④語法形式:

【修飾符】 class 類名{

? ?【權(quán)限修飾符】 native 返回值類型 方法名 (【形參列表】);

}文章來源地址http://www.zghlxwxcb.cn/news/detail-406479.html


  class Test {
    public static void main(String[] args){
        Test t=new Test();
        System.out.println(t.hashCode());//同時按Ctrl+點(diǎn)擊hashCode ->查看hashCode的源碼
    }
}

到了這里,關(guān)于Java ---一些關(guān)鍵字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 我在VScode學(xué)Java繼承(Java繼承的特點(diǎn)、super關(guān)鍵字、super和this對比、方法重寫、子類構(gòu)造器)貳

    我在VScode學(xué)Java繼承(Java繼承的特點(diǎn)、super關(guān)鍵字、super和this對比、方法重寫、子類構(gòu)造器)貳

    類的成員包括:成員變量;成員方法;構(gòu)造方法 構(gòu)造方法:不管什么修飾符都不可繼承 成員變量:都可以繼承,但注意一點(diǎn)(繼承!=調(diào)用,私有的就不可調(diào)用) 成員方法:非私有可以。私有不可。 我的個人博客主頁:如果’\\\'真能轉(zhuǎn)義1??說1??的博客主頁 關(guān)于Java基本語

    2024年02月14日
    瀏覽(101)
  • 【JavaSE專欄57】深度解析Java中的this和super關(guān)鍵字:用途、差異和實(shí)際應(yīng)用

    【JavaSE專欄57】深度解析Java中的this和super關(guān)鍵字:用途、差異和實(shí)際應(yīng)用

    博主 默語帶您 Go to New World. ? 個人主頁—— 默語 的博客???? 《java 面試題大全》 ??惟余輩才疏學(xué)淺,臨摹之作或有不妥之處,還請讀者海涵指正。??? 《MYSQL從入門到精通》數(shù)據(jù)庫是開發(fā)者必會基礎(chǔ)之一~ ?? 吾期望此文有資助于爾,即使粗淺難及深廣,亦備添少許微薄

    2024年02月07日
    瀏覽(30)
  • Java ---一些關(guān)鍵字

    ?①含義: this:當(dāng)前對象 在構(gòu)造器和非靜態(tài)代碼塊中,表示正在new的對象 在實(shí)例方法中,表示調(diào)用當(dāng)前方法的對象 ②this用法: this.成員變量:表示當(dāng)前對象的某個成員變量,而不是局部變量 this.成員方法:表示當(dāng)前對象的某個成員方法,完全可以省略this. this()或this(實(shí)參列

    2023年04月09日
    瀏覽(24)
  • JavaSE基礎(chǔ)(19) super,this 關(guān)鍵字

    子類對象的創(chuàng)建過程: 子類的構(gòu)造方法中,默認(rèn)先調(diào)用父類的無參構(gòu)造方法。如果沒有顯示的調(diào)用,那么隱含著super()。 ????????可以訪問父類的屬性 ????????可以訪問父類的方法 ????????指代父類的構(gòu)造方法, 如果有多個,靠參數(shù)來區(qū)分。要在第一行。 ?????

    2023年04月10日
    瀏覽(23)
  • Java面向?qū)ο蟆鄳B(tài)、Object類、instanceof關(guān)鍵字以及final關(guān)鍵字

    Java面向?qū)ο蟆鄳B(tài)、Object類、instanceof關(guān)鍵字以及final關(guān)鍵字

    總之,多態(tài)是面向?qū)ο缶幊讨幸粋€非常重要的概念,通過它可以實(shí)現(xiàn)統(tǒng)一的接口來操作不同的對象,提高代碼的可讀性和可維護(hù)性。在實(shí)際編程中,多態(tài)性的使用可以使代碼更加靈活和擴(kuò)展性更強(qiáng)。方法重寫是實(shí)現(xiàn)多態(tài)的基礎(chǔ)。 重寫如下所示 關(guān)于hashCode方法的重寫: 重寫t

    2024年02月12日
    瀏覽(114)
  • 每天一個知識點(diǎn) - 了解和使用super關(guān)鍵字

    super是一個,super和this很類似 可以使用 super() 函數(shù)訪問父類的構(gòu)造函數(shù),從而委托父類完成一些初始化的工作 如果子類重寫了父類的中某個方法的實(shí)現(xiàn),可以通過使用 super 來引用父類的方法實(shí)現(xiàn)? ? ? ? super( )函數(shù)是用于調(diào)用父類的一個方法,指向了當(dāng)前對象自

    2024年02月21日
    瀏覽(25)
  • JavaScript的static、this、super關(guān)鍵字介紹

    static: ☆ static用于定義類的靜態(tài)方法和靜態(tài)屬性。 ☆ 靜態(tài)方法是直接與類相關(guān)聯(lián)的方法,不需要實(shí)例化類即可調(diào)用。 ☆ 靜態(tài)屬性是類本身的屬性,而不是實(shí)例的屬性。 ☆ 在靜態(tài)方法內(nèi)部,不能使用this來引用實(shí)例,因?yàn)殪o態(tài)方法與特定實(shí)例無關(guān)。 th

    2024年02月16日
    瀏覽(21)
  • 【java面向?qū)ο笾衧tatic關(guān)鍵字】

    【java面向?qū)ο笾衧tatic關(guān)鍵字】

    static修飾成員變量 static修飾成員變量的應(yīng)用場景 static修飾成員方法 static修飾成員方法的應(yīng)用場景 static的注意事項(xiàng) static的應(yīng)用知識:代碼塊 static的應(yīng)用知識:單例設(shè)計模式 static靜態(tài)的意思,可以修飾成員變量,成員方法; static修飾成員變量: 1.有static修飾的成員變量叫做

    2024年02月13日
    瀏覽(24)
  • ES6中的Class關(guān)鍵字和super()方法,使用詳細(xì)(class類和super()方法)

    簡介:在ES6中,我們可以使用class來定義類,并通過 extends 實(shí)現(xiàn)類的繼承,然后在子類中,我們可以使用 super() 來調(diào)用父類的構(gòu)造函數(shù);今天來分享下class的使用詳細(xì)。 1、 首先,使用class,定義一個父類; 2、 然后再定義一個子類, 通過ex

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包