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

歡迎訪問 生活随笔!

生活随笔

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

java

Java中的覆盖和隐藏以及final关键字

發布時間:2025/5/22 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的覆盖和隐藏以及final关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java覆蓋和隱藏

  • (1) 變量只能被隱藏(包括靜態和非靜態),不能被覆蓋;
  • (2) 可以用子類的靜態變量隱藏父類的靜態變量,也可以用子類的非靜態變量隱藏父類的靜態變量,也可以用非最終變量(final)隱藏父類中的最終變量;
  • (3) 靜態屬性(static)和靜態方法(static)可以被繼承,但是不能被重寫、被覆蓋(@Override)而是被隱藏;
  • (4) 非靜態方法可以被覆蓋;
  • (5) 不能用子類的靜態方法隱藏父類中的非靜態方法,否則編譯會報錯;
  • (6) 不能用子類的非靜態方法覆蓋父類的靜態方法,否則編譯會報錯;
  • (7) 不能重寫父類中的最終方法(final);
  • (8) 抽象方法必須在具體類中被覆蓋;
  • (9) 靜態方法和實例方法不能互相覆蓋;

Java里用final修飾的成員和成員變量能否被繼承

  • (1) final修飾的成員和成員變量,可以被繼承。
  • (2) final修飾的方法可以被繼承不能被重寫。
  • (3) final修飾的類,不能被繼承。

/*** Cat class* Java 中實例方法被覆蓋,靜態方法被隱藏** @author libin* @date 2019/1/28 17:05*/ class Animal {public static void testClassMethod() {System.out.println("Class" + " method in Animal.");}public void testInstanceMethod() {System.out.println("Instance " + " method in Animal.");} }public class Cat extends Animal {public static void testClassMethod() {System.out.println("The class method" + " in Cat.");}@Overridepublic void testInstanceMethod() {System.out.println("The instance method" + " in Cat.");}public static void main(String[] args) {Cat myCat = new Cat();Animal myAnimal = myCat;Animal.testClassMethod();myAnimal.testInstanceMethod();} }

參考答案

Class method in Animal. The instance method in Cat. /*** Demo class** @author libin* @date 2019/1/28 16:25*/ class A {static void fun() {System.out.println("A.fun()");} }class B extends A {static void fun() {System.out.println("B.fun()");} }public class Demo {public static void main(String args[]) {A a = new B();a.fun();} }

參考答案

A.fun() /*** Son class** @author libin* @date 2019/1/29 10:25*/class Dad {protected static String me = "dad";public void printMe() {System.out.println(me);} }public class Son extends Dad {protected static String me = "son";@Overridepublic void printMe() {System.out.println(me);}public static void main(String[] args) {Dad dad = new Son();Son son = new Son();System.out.println("son.me:" + son.me);System.out.println("dad.me:" + dad.me);System.out.println("Son.me:" + Son.me);System.out.println("Dad.me:" + Dad.me);son.printMe();dad.printMe();} }

參考答案

son.me:son dad.me:dad Son.me:son Dad.me:dad son son

反編譯Class代碼

class Dad {protected static String me;public void printMe() {System.out.println(Dad.me);}static {Dad.me = "dad";} }public class Son extends Dad {protected static String me;@Overridepublic void printMe() {System.out.println(Son.me);}public static void main(final String[] args) {final Dad dad = new Son();final Son son = new Son();System.out.println("son.me:" + Son.me);System.out.println("dad.me:" + Dad.me);System.out.println("Son.me:" + Son.me);System.out.println("Dad.me:" + Dad.me);son.printMe();dad.printMe();}static {Son.me = "son";} }

參考鏈接

  • https://docs.oracle.com/javase/tutorial/java/IandI/override.html
  • https://www.cnblogs.com/cs1003/p/3408119.html

轉載于:https://www.cnblogs.com/hglibin/p/10333551.html

總結

以上是生活随笔為你收集整理的Java中的覆盖和隐藏以及final关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

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