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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java继承方法规则或规律

發布時間:2024/4/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java继承方法规则或规律 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

 

 ? ?方法的繼承與屬性的繼承有很大的不同,屬性任何繼承方式均可,而方法則有各種限制,于是動力節點Java培訓機構小編在這里做了一個簡單的總結。

?

?

?

  1、修飾符相同的方法覆蓋,即只改內部,不改外部

?

  2、訪問權限不同的方法覆蓋,子類只能相對父類越來越寬松,例如父類是public,子類就不能是缺省或protect,private

?

  3、返回值的類型覆蓋,只允許相容的返回類型,例如不能將返回值為int型改為double型,但是復合類型則例外

?

  4、final的方法覆蓋,只能是父類無,子類有,而不能是父類有,子類無

?

  5、static(靜態)的方法覆蓋不能有任何變動,即父類有,子類必須有,父類無,子類也必須無

?

  實例如下:

?

  父類:

?

package ExtendMethod;

?

public class CommonMethod {

? ? protected int x=100;

? ? public int getX() {//定義一個普通返回值的實例方法

? ? ? ? return x;

? ? }

? ? public CommonMethod getObject() {//定義一個返回復合類型的方法

? ? ? ? return new CommonMethod();

? ? }

? ? public final void setX(int ix) {

? ? ? ? x=ix;

? ? }

? ? protected? void proShowMsg() {//定義一個具有保護權限的方法

? ? ? ? System.out.println("this is protected ShowMsg() in Common class");

? ? }

? ??

? ? public void pubShowMsg() {//定義一個具有公共訪問權限的方法

? ? ? ? System.out.println("this is public showMsg() in Common class");

? ? }

? ? static public void stShowMsg() {//定義一個靜態方法

? ? ? ? System.out.println("this is static showMsg() in Common class");

? ? }

}

?

?

一、修飾符相同的可以任意覆蓋:

?

public class OverrideMember_1 extends Common{

? ? //覆蓋父類中的同名實例方法

? ? public void pubShowMsg() {

? ? ? ? System.out.println("this is public showMsg in derive class");

? ? }

? ? //覆蓋父類中的同名靜態方法

? ? static public void stShowMsg() {

? ? ? ? System.out.println("this is static showMsg() in derive class");

? ? }

? ? //可以任意覆蓋

? ? public static void main(String args[]) {

? ? ? ? OverrideMember_1 oa =new OverrideMember_1();

? ? ? ? oa.pubShowMsg();

? ? ? ? oa.proShowMsg();

? ? }

}

?

?

二、訪問權限不同的覆蓋,只能越來越寬松,private——>public的方向

?

public class OverrideMember_2 extends Common{

? ? public void proShowMsg() {//覆蓋父類中的protect方法,public > protect,正確

? ? ? ? System.out.println("this is public ShowMsg()");

? ? }

? ? /*protected void pubShowMsg() {//權限越來越嚴格,錯誤,protect < public

? ? ? ? System.out.println("this is protect ShowMsg()");

? ? }*/

}

?

?

  三、返回值類型的覆蓋

?

public class OverrideMember_3 extends Common {

? ? //覆蓋getX()方法,但返回的數據類型不同,原方法是int型,錯誤

? ? /*public double getX() {

? ? ? ? return (double)x;

? ? }*/

? ? //覆蓋getObject(),返回類型相容,正確,原方法的返回類型是新common對象,復合類型

? ? public OverrideMember_3 getObject() {

? ? ? ? return new OverrideMember_3();

? ? }

}

?

?

  四、final的方法覆蓋,只能從無到有,不能從有到無

?

public class OverrideMember_4 extends Common{

? ? //覆蓋getX()方法,并將其指定為最終方法,正確,原方法為public int getX()

? ? public final int? getX() {

? ? ? ? return x;

? ? }

? ? //覆蓋最終方法,錯誤,原方法為 public final void setX()

? ? /*public void setX(int ix) {

? ? ? ? x=ix;

? ? }*/

}

?

?

五、static不能有任何改變

?

public class OverrideMember_5 extends Common{

? ? //試圖覆蓋實例方法,將其改為靜態方法,錯誤,原型為 public void pubShowMsg()

? ? /*public static void pubShowMsg() {

? ? ? ? System.out.println("this is public ShowMsg()");

? ? }*/

? ? //試圖覆蓋靜態方法,并將其指定為實例方法,錯誤

? ? /*public void stShowMsg() {

? ? ? ? System.out.println("this is static ShowMsg()");

? ? }*/

}

//總結,靜態與實例之間不能相互轉換

?

?

以上就是動力節點Java培訓機構小編介紹的“java繼承方法規則或規律”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

總結

以上是生活随笔為你收集整理的java继承方法规则或规律的全部內容,希望文章能夠幫你解決所遇到的問題。

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