Java基础08静态关键字static和继承(thissup
目录1。关键字static1。1修饰成员变量1。1。1特点1。1。2访问格式1。1。3定义场景1。1。4示例1。2修饰成员方法1。2。1特点1。2。2访问格式1。2。3定义场景1。2。4示例1。3代码块1。3。1格式和示例1。3。2特点及场景1。4注意事项
2。关键字this、super和extends2。1继承(extends)2。2继承的特点2。3继承成员访问2。4方法重写2。5子类构造器2。6this和super3。类执行顺序
1。关键字static
static是Java的关键字,可以修饰成员变量和成员方法。1。1修饰成员变量1。1。1特点加关键字static的成员变量静态变量:
静态成员变量属于类属性,内存中只加载一次不加关键字static的成员变量实例变量:
实例成员变量属于实例属性,每次创建新实例会初始化变量1。1。2访问格式
静态成员变量:类。变量名(推荐)实例。变量名
实例成员变量:实例。变量名1。1。3定义场景
静态成员变量:
属性属于类,且需要实例共享或者是常数等(例:圆周率3。14)
实例成员变量:
属性属于所有实例共性,但是每个实例属性值并不相同1。1。4示例publicclassStaticTest1{定义静态成员变量publicstaticdoublePI3。14;定义实例成员变量publicdoubleresult;publicstaticvoidmain(String〔〕args){计算圆的周长StaticTest1staticTest1newStaticTest1();圆的半径为2staticTest1。result22StaticTest1。PI;System。out。println(staticTest1。result);}}
PI是属于静态成员变量,需要共享,所有圆相关的计算都需要它,所有他是静态共享的。简单的内存描述:
类加载后再堆内存中创建PI变量方法区加载main方法,之后开始运行将main方法加载到栈内存中初始化StaticTest1类,在堆内存中创建实例,将实例地址返回给staticTest1实例变量名这时实例staticTest1中静态变量指向的是类加载是创建的静态变量PI执行计算,赋值给staticTest1实例成员变量输出结果1。2修饰成员方法1。2。1特点加关键字static的成员方法静态成员方法:
静态成员方法属于类,内存中只加载一次,所有对象共用功能不加关键字static的成员方法实例成员方法:
实例成员方法属于实例特有方法1。2。2访问格式
静态方法:
类。静态方法
实例。静态方法(不推荐)
成员方法:
实例。成员方法1。2。3定义场景
静态方法表示类共用的功能,并不属于特定对象方法。比如计算加法都是两数相加,这是特定功能,每个实例计算的过程都一致。在程序中为了方便单独访问。
成员方法表示实例特有方法。比如学生实例,每个人说话的声音都是不同的,这就是特有功能,某某人说得话,具有一定识别性。在程序中需要访问成员变量。1。2。4示例publicclassStudent{定义静态方法publicstaticvoidtask(){System。out。println(所有学生的任务是学习);}定义实例方法publicvoidsleep(){System。out。println(每个学生的睡姿都有自己的独特性);}publicstaticvoidmain(String〔〕args){直接调用静态方法Student。task();调用实例方法StudentstudentnewStudent();student。sleep();}}
你可能会想,任务task方法也是学生的独特方法,这样想确实也没问题。这就要看你抽象出来的方法是否具备所有对象共有。比如sleep这个方法也可以是静态方法,毕竟所有学生都需要休息,但是要具体到每个学生休息情况就变成独有的。1。3代码块
代码块是类的五大部分之一(代码块,构造方法,成员变量,方法,内部类),在java中使用{}括起来的就是代码块1。3。1格式和示例
静态代码块:static{。。。}
代码块:{。。。}
示例:publicclassStaticTest2{静态代码块static{System。out。println(静态代码块执行);}代码块{System。out。println(类代码块执行);}publicstaticvoidmain(String〔〕args){创建示例StaticTest2staticTest2newStaticTest2();}}1。3。2特点及场景
静态代码块特点:类加载执行,只执行一次场景:做一些静态资源加载
代码块特点:每次创建实例调用构造方法时执行,在构造方法之前执行。场景:初始化实例资源1。4注意事项
静态关键字主要应用在工具类和常量中,在实际开发中,工具类是必不可少的。
静态关键字还可以修饰类,这将牵扯到内部类,将在下章说明静态方法只能访问静态成员变量,不可以访问实例成员变量。实例可以访问静态成员静态方法中不可以使用this关键字(下面会说)
2。关键字this、super和extends关键字this、super主要在继承方面体现到的比较多。this表示当前实例,super表示父类。java中提供关键字extends,使一个类和另一个类建立继承关系,被继承类为父类,继承类为子类。继承类(子类)可以直接使用父类的属性和成员方法,这样就大大提高代码的复用性。2。1继承(extends)
格式:publicclass类名extends父类类名{。。。}
优势:
提高代码的复用性,减少冗余代码增强代码的扩展性
设计规范:
提取类之间相同属性子类独有属性不要放在父类中所有类设计符合面对对象逻辑2。2继承的特点子类可以继承父类的属性和行为,但是不能继承父类构造器java是单继承,一个子类只能有一个父类(很符合现实生活)不支持多继承,但支撑多层继承java中所有类都是Object的子类子类可以继承父类私有成员变量,但是不能直接访问(可以通过公共方法和构造器访问和设置)不继承静态变量,可以共享2。3继承成员访问在子类中访问成员(就近原则)
先子类局部范围访问然后子类成员访问父类成员访问以上都没有则报错如果子父类出现重名成员,则优先使用子类。若想调用父类,格式如下:super。父类成员变量父类成员方法2。4方法重写简介:子类继承父类时,子类实现了和父类相同的方法,我们就称子类方法为重写方法。格式:当子类重写父类方法时,需要在方法上添加override注解要求:重写的方法必须与父类方法相同,除了名称,参数列表也要一致。私有方法不能被重写。子类重写方法时,访问权限必须大于等于父类方法访问权限。
示例:publicclassPeople{privateStringname;publicvoidshowName(){System。out。println(我的名称:name);}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this。namename;}}publicclassTeacherextendsPeople{publicTeacher(){super。setName(Tome);}OverridepublicvoidshowName(){System。out。println(我是教师。我的名字是getName());}publicstaticvoidmain(String〔〕args){TeacherteachernewTeacher();teacher。showName();}}2。5子类构造器子类构造函数执行时都先执行父类的默认构造函数子类构造函数第一行默认是super()不写也存在如果父类无默认构造器将报错如果父类无构造器,也可以手动调用父类构造器。(例:super(param))2。6this和super
关键字
访问成员
构造器
说明
this
this。成员变量this。方法名()
this()本类构造器
代表当前调用类对象引用
super
super。成员变量super。方法名()
super()父类构造器
代表当前调用类对象父类引用
注意:
this()和super()只能放在方法的第一行,所以这两个方法不能在同一个方法中出现。3。类执行顺序父类publicclassPeople{privateStringname;privateStringsex;privateintage;static{System。out。println(执行People静态代码块);}{System。out。println(执行People代码块);}publicPeople(){System。out。println(执行People构造器);}getandset}子类publicclassStudentextendsPeople{privateintstudentId;privateStringpro;static{System。out。println(执行Student静态代码块);}{System。out。println(执行Student代码块);}publicStudent(){System。out。println(执行Student构造器);}getandset}测试类publicclassTest{publicstaticvoidmain(String〔〕args){StudentstudentnewStudent();}}
运行Test类可以看见执行后的结果:
执行People静态代码块
执行Student静态代码块
执行People代码块
执行People构造器
执行Student代码块
执行Student构造器
本章结束,用于个人学习和小白入门,大佬勿喷!希望大家多多点赞收藏支撑支撑!
源码【GitHub】【码云】
用极致设计征服强迫症用户,魅族18系列这个开学季价格有点香8月已经接近尾声,细数一番国产手机厂商还发布了不少新旗舰,当然在配置的提升的同时价格也是水涨船高。在新机价格太高的情况下,消费者不妨看看上半年的一些旗舰,价格不仅有优势,而且在……
家用空气净化器清新净化如何?生活中我们经常能见到很多业主装修完新房后放一些橘子皮,洋葱用来去去味,对于甲醛来说其实这些方法并没有什么太大的效果,不如选择家用空气净化器,部分家用净化器有去甲醛的功效,那么家……
分离瞬态都好的耳机,哪个性价比高?给大家推荐一款有线耳机WG品牌的T2,听说他号称外挂。初识它是在朋友家,虽然LOL这个游玩游戏,游戏不用你去听枪声去听脚步声,但是音效方面和语音方面就耳机表现越亮眼越好,音质能……
阿里腾讯生态互通的B面是11ampamplt1编辑导读:越来越多的迹象表明,阿里和腾讯要互通生态了。这两个分别在各自的领域做到了王者的企业,如何相互合作是否能做到112呢?本文作者认为不然,很有可能是111。为什么这么说呢……
iOS微信内测边写边译功能开启方法,亲测有效最近安卓或iOS微信基本都是同步更新,目前安卓微信已经发布了8。0。11测试版,而iOS微信已经发布了8。0。11正式版。不过根据官方显示,安卓或iOS微信的8。0。11……
xr还值得入手吗?xr还值得入手吗?手中的荣耀10和小米8se都是664的。最近总提前储存空间不足了。经济能力有限,想换台二手的机子,撑过这坚难的两年。预算2000左右的样子。近期在二手平……
自动翻译机好用吗?讯飞双屏翻译机不止会翻译在跨国会议沟通中,语言问题总是摆在人们面前的第一道难关,很多情况下需要一位译员在场才能解决这个难题。但是请翻译官不仅费用较高,有的时候还会有信息泄露的风险。此时,如果带上一台实……
天猫继续成为618绝对主场25万品牌拥抱天猫6185月20日,上半年规模最大的购物节天猫618官宣启动,天猫继续成为618绝对主场,今年将有25万品牌拥抱天猫618,达到了去年同期的2。5倍。期间将有1300万款商品上架,其中……
一文读懂特种工程塑料PEIPEI相对于其他芳族聚酰亚胺而言,是一种成本较低,产量较大的热塑性聚酰亚胺,从综合性能和性能价格比方面考察,聚醚酰亚胺是芳族聚酰亚胺改性研究中最成功的一类产品。今天我们就从制备……
夏日MojitoDC简评AampampampnormaSR2最近AK最受关注的新品无疑是SE200,脑洞大开的混合DAC(AK4499ESS9068)架构,一次性给用家两个声音风格和听音感受,无疑是一次非常有意思的尝试。而其实还有……
十日谈医疗剧拯救了你,网文拯救了医疗剧影视剧的评分有时也很迷。2017年10月底上映之初,《急诊科医生》便遭遇了口碑滑铁卢,豆瓣评分5。8跌到了及格线以下,不少人甚至表示要向上半年由业内良心正午阳光出品的《外……
arparaVR手机观影APP全新上线,沉浸体验高清巨幕观影于今年下半年正式发布的以MicroOLED高清显示和超轻量级两大特点著称的arpara5KVR头显,在近日官方为其量身定制的连接手机使用的观影APParparahome正式上线……