电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java中超詳細(xì)this與super的概念和用法

瀏覽:9日期:2022-08-17 11:59:53

前言:理論代碼必須結(jié)合起來(lái)才能真正的掌握

一、this

概念:this代表著當(dāng)前對(duì)象的引用,也是當(dāng)前函數(shù)所屬對(duì)象的引用。直白的說(shuō),哪個(gè)對(duì)象調(diào)用了當(dāng)前函數(shù),this就代表哪個(gè)對(duì)象。

常見(jiàn)的用法(理論不理解就先參考下面案例)

最常見(jiàn)的情況是是對(duì)象的一個(gè)屬性或被構(gòu)造器的參數(shù)屏蔽時(shí),如果需要調(diào)用屏蔽的屬性,this就代表哪個(gè)對(duì)象 this只能在方法內(nèi)使用,表示正在調(diào)用方法的那個(gè)對(duì)象,但是,如果在方法內(nèi)調(diào)用同一個(gè)類(lèi)的另一個(gè)方法,就不必使用this,直接調(diào)用即可,this關(guān)鍵字是能省則省 this和static的關(guān)系: static方法是類(lèi)方法,依附于類(lèi)而不依賴(lài)與任何對(duì)象,static屬性是指該屬性是類(lèi)中所有對(duì)象所共享的,static方法是類(lèi)方法,先于任何實(shí)例(對(duì)象)存在,static在類(lèi)加載時(shí)就已經(jīng)存在了,但對(duì)象是在創(chuàng)建時(shí)才生成;方法中使用this關(guān)鍵字它的值是當(dāng)前對(duì)象的引用,只能用它調(diào)用屬于當(dāng)前對(duì)象的屬性和方法和。但是,this可以調(diào)用static類(lèi)型的屬性,舉個(gè)例子:一個(gè)父親是不可能向他還未出生的孩子借錢(qián)的,但孩子出生后完全可以找他父親去借錢(qián); 對(duì)于一個(gè)類(lèi)中的this,不一定單指這個(gè)的對(duì)象,也可能是這個(gè)類(lèi)的子類(lèi)的對(duì)象(抽象類(lèi)里面的this只能是實(shí)際調(diào)用中它的派生類(lèi)的實(shí)例化對(duì)象); 總之:如果new 父類(lèi)對(duì)象的話(huà),父類(lèi)方法的this指向的是父類(lèi),如果new 子類(lèi),那么父類(lèi)方法的this指向的是子類(lèi) this關(guān)鍵字也可以用于在構(gòu)造函數(shù)中調(diào)用其他構(gòu)造函數(shù)。但是,只能定義在構(gòu)造函數(shù)的第一行,因?yàn)槌跏蓟瘎?dòng)作要先執(zhí)行

this使用案例

class Student extends Person{ public Student(String name, int age, String nation) { super(name); }}public class Person{ private String name; private int age; private static String nation = 'chinese'; public Person(String name) { this.name = name; } public Person(String name, int age) { //初始化方法必須放到第一行 this(name); this.age = age; } //局部變量name和age屏蔽了name和age屬性,用this進(jìn)行標(biāo)識(shí) public Person(String name, int age,String nation) { this.name = name; this.age = age; //this可以調(diào)用到靜態(tài)屬性 this.nation = nation; } public void test(){ System.out.println('測(cè)試'); } public static void test2(){ //靜態(tài)方法內(nèi)不能出現(xiàn)this或super System.out.println('測(cè)試'); } public void print(){ //調(diào)用類(lèi)內(nèi)部的方法(toString已重寫(xiě))加不加this都行 this.toString(); } @Override public String toString() { return 'Person{' + 'name=’' + name + ’’’ + ', age=' + age + ’}’; } public static void main(String[] args) { //這個(gè)this代表的student對(duì)象 Student student = new Student('wzh',20,'chinese2'); System.out.println(student.toString()); //這個(gè)this代表的是person對(duì)象 Person person = new Person('wzh2',20,'chinese3'); System.out.println(student.toString()); //擴(kuò)展,全局變量nation的值最后是chinese3 System.out.println(Person.nation); }}

結(jié)果:

Java中超詳細(xì)this與super的概念和用法

二、super

概念:super可以理解為“父類(lèi)的”,super可以在子類(lèi)中調(diào)用父類(lèi)的屬性,方法,構(gòu)造器,super關(guān)鍵字和this一樣能省就省;

注意點(diǎn):1、this和super很像,this指向的是當(dāng)前對(duì)象的調(diào)用,super指向的是當(dāng)前調(diào)用對(duì)象的父類(lèi)2、類(lèi)加載完畢,創(chuàng)建對(duì)象,父類(lèi)的構(gòu)造方法會(huì)被調(diào)用

父類(lèi)如果重寫(xiě)了無(wú)參構(gòu)造器或者父類(lèi)中沒(méi)有有參構(gòu)造器,那么子類(lèi)的構(gòu)造方法第一行就是super(),可以省略

class Student extends Person{ //這是默認(rèn)的構(gòu)造器內(nèi)容,寫(xiě)出來(lái)是為了幫大家理解 public Student(){ super(); }}public class Person{ private String name; private int age;}

如果父類(lèi)中定義了有參構(gòu)造器但沒(méi)有顯示寫(xiě)出無(wú)參構(gòu)造器,那么必須通過(guò)super調(diào)用父類(lèi)的有參構(gòu)造函數(shù),如果父類(lèi)中定義了多個(gè)有參構(gòu)造區(qū),那么用super調(diào)用其中一個(gè)有參構(gòu)造器即可

class Student extends Person{ public Student(String name, int age) { //任選一個(gè)父類(lèi)有參構(gòu)造 //super(name, age); super(name); }}public class Person{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person(String name) { this.name = name; }}

3、子類(lèi)相應(yīng)構(gòu)造創(chuàng)建了一個(gè)子類(lèi)對(duì)象,該子類(lèi)對(duì)象還包含了一個(gè)父類(lèi)對(duì)象。該父類(lèi)對(duì)象在子類(lèi)對(duì)象內(nèi)部(正如子類(lèi)的構(gòu)造器無(wú)論如何都要通過(guò)super調(diào)用父類(lèi)構(gòu)造器一樣,子類(lèi)的對(duì)象被成功構(gòu)造,那么它的內(nèi)部就會(huì)包含父類(lèi)的對(duì)象),證明如下

子類(lèi)重寫(xiě)父類(lèi)的方法后可以通過(guò)super調(diào)用到父類(lèi)的方法

class Student extends Person { private String name = 'wzh2'; @Override public String getName() { return '子類(lèi)' + name; } public String getParentName(){ //調(diào)用父類(lèi)的方法 return super.getName(); } public static void main(String[] args) { Student student = new Student(); System.out.println(student.getName()); System.out.println(student.getParentName()); }}public class Person{ //protected意味著子類(lèi)和同一包中可以訪問(wèn) protected String name = 'wzh'; protected int age = 20; public String getName() { return '父類(lèi)' +name; }}

輸出結(jié)果

Java中超詳細(xì)this與super的概念和用法

子類(lèi)獲取到父類(lèi)的變量

class Student extends Person{ public void parentDisplay(){ System.out.println(super.age + super.name); } public static void main(String[] args) { new Student().parentDisplay(); //輸出結(jié)果:20wzh }}public class Person{ //protected意味著子類(lèi)和同一包中可以訪問(wèn) protected String name = 'wzh'; protected int age = 20;}

調(diào)用父類(lèi)的構(gòu)造器不再舉例

4、this super只能在有對(duì)象的前提下使用,不能在靜態(tài)上下文使用5、如果一個(gè)類(lèi)沒(méi)有基礎(chǔ)任何父類(lèi),super還有用嗎?肯定有用,可以調(diào)用Object中的方法

public class Person{ private String name; private int age; public void display(){ //通過(guò)this或super調(diào)用到了Object的toString(); System.out.println(super.toString()); } public static void main(String[] args) { new Person().display(); //輸出為Person@452b3a41 }}

到此這篇關(guān)于Java中超詳細(xì)this與super的概念和用法的文章就介紹到這了,更多相關(guān)javathis與super的概念和用法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 锤式粉碎机,医药粉碎机,锥式粉碎机-无锡市迪麦森机械制造有限公司 | 山东艾德实业有限公司 | 减速机_上海宜嘉减速机| 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 北京开源多邦科技发展有限公司官网| 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 长信科技产业园官网_西安厂房_陕西标准工业厂房| 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 广东成考网-广东成人高考网| 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | 芜湖厨房设备_芜湖商用厨具_芜湖厨具设备-芜湖鑫环厨具有限公司 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 首页_中夏易经起名网| 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 |