日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java常见面试知识点:继承、接口、多态、代码块

發布時間:2024/7/5 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常见面试知识点:继承、接口、多态、代码块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:Java常見面試知識點:繼承、接口、多態、代碼塊

答案:

1.繼承

繼承中構造方法的訪問特點
子類中所有的構造方法默認都會訪問父類中無參的構造方法
為什么?
? 子類在初始化的時候,有可能會使用到父類中的數據,如果父類沒有完成初始化,子類將無法使用父類的數據。 子類初始化之前,一定要先完成父類初始化。
怎么初始化?
? 構造方法的第一條語句默認都是:super()
注意:如果我們編寫的類,沒有手動指定定父類,系統也會自動繼承Object(Java繼承體系中的最頂層父類)

看如下代碼:

package com.xy;/*** @ProjectName: day01* @Package: PACKAGE_NAME* @ClassName: Fu* @Author: 楊路恒* @Description:* @Date: 2021/8/10 0010 18:53* @Version: 1.0*/ public class Fu {int a;public Fu(){this.a=6;}public void show(){System.out.println("1");} }package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassName: Zi* @Author: 楊路恒* @Description:* @Date: 2021/8/10 0010 18:53* @Version: 1.0*/ public class Zi extends Fu {int a;public Zi(){//子類在初始化之前,一定要先完成父類數據的初始化//子類在初始化之前,一定要先訪問到父類的構造方法,完成父類數據的初始化//系統在每一個構造方法中,默認隱藏的一句代碼super()super();this.a=66;System.out.println(this.a);System.out.println(super.a);}public Zi(int a){super();System.out.println(a);}public void show(){System.out.println("2");}public static void main(String[] args) {Zi zi=new Zi();zi.show();/*** 1.方法重寫:在繼承體系中,子類出現了和父類一摸一樣的方法聲明(方法名,參數列表,返回值類型)* 2.方法重載:在同一個類中,方法名相同,參數列表不同,與返回值無關*/} }


繼承中構造方法的訪問特點
如果父類中沒有空參構造方法,只有帶參構造方法,會出現什么現象呢?
?子類通過super,手動調用父類的帶參的構造方法
?子類通過this去調用本類的其他構造方法,本類其他構造方法再通過super去手動調用父類的帶參的構造方法
注意:this(…)super(…)必須放在構造方法的第一行有效語句,并且二者不能共存。

2.抽象


?抽象方法:將共性的行為(方法)抽取到父類之后,發現該方法的實現邏輯無法在父類中給出具體明確,該方法可以定義為抽象方法。
?抽象類:如果一個類中存在抽象方法,那么該類就必須聲明為抽象類


模板設計模式
?設計模式(Design pattern)是 被反復使用、多數人知曉的、經過分期目的、代碼設計經驗的總結。 使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。
?模板設計模式:把抽象類整體就可以看做成一個模板,模板中不能決定的東西定義成抽象方法
?? 讓使用模板的類(繼承抽象類的類)去重寫抽象方法實現需求。

3.接口


接口中成員的特點
? 成員變量
?? 只能是常量
?? 默認修飾符:public static final
? 構造方法
?? 沒有
? 成員方法
?? 只能是抽象方法
?? 默認修飾符:public abstract
?


JDK8版中接口成員的特點
? JDK8版本后
??? ?允許在接口中定義非方法,但是需要使用關鍵字default修飾,這些方法就是默認方法作用:解決接口升級的問題
接口中默認方法的定義格式:
? 格式:publicdefault返回值類型方法名(參數列表){ }
? 范例:public default void show() { }
接口中默認方法的注意事項:
? 默認方法不是抽象方法,所以不強制被重寫。但是可以被重寫,重寫的時候去掉default關鍵字
? public可以省略,default不能省略
? 如果實現了多個接口,多個接口中存在相同的方法聲明,子類就必須對方法進行重寫


JDK8版中接口成員的特點
? JDK8版本后
??? 1 .允許在接口中定義非抽象方法,但是需要使用關鍵字default修飾,這些方法就是默認方法作用:解決接口升級的問題
??? 2 .接口中允許定義static靜態方法
接口中靜態方法的定義格式:
? 格式:public static返回值類型方法名(參數列表){ }
? 范例:public static void show(){ }
接口中靜態方法的注意事項:
?靜態方法只能通過接口名調用,不能通過實現類名或者對象名調用
? public可以省略,static不能省略

package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassName: testInter* @Author: 楊路恒* @Description:* @Date: 2021/8/11 0011 18:29* @Version: 1.0*/ public interface testInter {int num=66;public default void show(){System.out.println("JDK1.8");}public static void study(){System.out.println("靜態");} }package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassName: test04* @Author: 楊路恒* @Description:* @Date: 2021/8/11 0011 18:28* @Version: 1.0*/ public class test04 implements testInter{@Overridepublic void show() {System.out.println("666");}public static void main(String[] args) {/*** 成員變量:只能是常量,系統會默認加入三個關鍵字* public static final* 構造方法:沒有* 成員方法:只能是抽象方法,系統會默認加入兩個關鍵字 ,public abstract*/System.out.println(num); //接口變量是常量System.out.println(testInter.num);//接口變量是final修飾test04 test04=new test04();test04.show();testInter.study();} }

4.代碼塊


代碼塊概述與分類
在Java中,使用{}括起來的代碼被稱為代碼塊
分類:
? 局部代碼塊
?? 位置:方法中定義
?? 作用:限定變量的生命周期,及早釋放,提高內存利用率
? 構造代碼塊
?? 位置:類中方法外定義
?? 特點:每次構造方法執行的時,都會執行該代碼塊中的代碼,并且在構造方法執行前執行
?? 作用:將多個構造方法中相同的代碼,抽取到構造代碼塊中,提高代碼的復用性
? 靜態代碼塊
?? 位置:類中方法外定義
?? 特點:需要通過static關鍵字修飾,隨著類的加載而加載,并且只執行—次
?? 作用:在類加載的時候做一些數據初始化的操作

package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassName: jubu* @Author: 楊路恒* @Description:* @Date: 2021/8/11 0011 12:59* @Version: 1.0*/ public class jubu {public static void main(String[] args) {/*** 局部代碼塊* 位置:方法中定義* 作用:限定變量的生命周期,及早釋放,提高內存利用率*/{int a=66;System.out.println(a);}} }package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassName: gouzhao* @Author: 楊路恒* @Description:* @Date: 2021/8/11 0011 13:02* @Version: 1.0*/ public class gouzhao {/*** 構造代碼塊* 位置:類中方法外定義* 特點:每次構造方法執行的時候,都會執行該代碼塊中的代碼,并且在構造方法執行前執行* 作用:將多個構造方法中相同的代碼,抽取到代碼塊中。提高代碼的復用性*/public static void main(String[] args) {Student1 student1=new Student1();Student1 student11=new Student1();} }class Student1 {{System.out.println("我是構造代碼塊");System.out.println("好好學習");}public Student1() {System.out.println("空參構造方法");}public Student1(int a) {System.out.println("有參構造方法");} }package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassName: jingtai* @Author: 楊路恒* @Description:* @Date: 2021/8/11 0011 17:21* @Version: 1.0*/ public class jingtai {/*** 靜態代碼塊* 位置:類中方法外定義* 特點:需要通過static關鍵字修飾,隨著類的加載而加載,并且只執行一次* 作用:在類加載的時候做一些數據初始化的操作*/public static void main(String[] args) {Person person=new Person();Person person1=new Person();} } class Person{static {System.out.println("我是靜態代碼塊");}public Person() {System.out.println("我是Person類的空參數構造方法");}public Person(int a){System.out.println("我是Person類的帶......參數構造方法");} }

總結

以上是生活随笔為你收集整理的Java常见面试知识点:继承、接口、多态、代码块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。