1. 程式人生 > >3 java 繼承與編譯情況 | 方法重寫 | 通過反射改變private變數值

3 java 繼承與編譯情況 | 方法重寫 | 通過反射改變private變數值

public class Test{
	public static void main(String[] arge) throws Exception{
		Parent p = new Child();
		p.output();
	 }

 }
class Parent{
	public void output() throws NullPointerException{
		System.out.println("parent");	
 	}
 }
class Child extends Parent
{
	public void output() throws Exception{
		System.out.println("child");
	 }
 }

1,程式是否能編譯通過?

2,如果能編譯通過,程式輸出什麼?

程式無法通過編譯。

關於java中的方法重寫 override?

1,子類的方法與父類的方法有相同的返回型別,相同的方法名,相同的引數列表。

2,子類的方法的訪問級別不能低於父類中該方法的訪問級別。

3,子類中方法丟擲的異常範圍不能大於父類中方法丟擲的異常的範圍。

-----------------------

通過反射改變private變數值

public class PrivateTest{
	private String name = "hello";
	public String getName(){
		return name;
	 }
 }

以上程式可否改變 那麼值?

可以,通過反射。

獲取某個類的對應的Class物件的方式?

1,通過類的.class語法

2,通過類的物件的getClass()方法

3,通過Class物件的forName()方法

4,對於包裝類(8種基本資料型別的包裝類),可以通過.TYPE語法方式

實現

import java.lang.reflect.Field;
public class ReflectionTest{
	public static void main(String[] arge) throws Exception{
		PrivateTest pt = new PrivateTest();

		Class<?> class = PrivateTest.class;
		Field field = class.getDeclaredField("name");
		field.setAccessible(true);
		field.set(pt, "world");
		System.out.println(pt.getName());
	 }
 }


相關推薦

3 java 繼承編譯情況 | 方法重寫 | 通過反射改變private數值

public class Test{ public static void main(String[] arge) throws Exception{ Parent p = new Child(); p.output(); } } class Parent

Java 繼承重寫、重載

重載 進行 cnblogs 向上造型 用法 編譯 根據 ide 調用 1.類的繼承 1)繼承   父類:所有子類所共有的屬性和行為   子類:子類所特有的屬性和行為 通過extends關鍵字來實現類的繼承 子類(Sub class)可以繼承父類(Super class)的

JAVA繼承編譯運行的關系(編譯看左邊,運行看右邊)

句子 clas http .com 技術分享 eth com 簡單 images “成員變量,靜態方法看左邊;非靜態方法:編譯看左邊,運行看右邊。” 意思是:當父類變量引用子類對象時(Fu f = new Zi();),在這個引用變量f指向的對象中,他的成員變量和靜態方法

3. JAVA陣列方法

1陣列的定義          陣列是一組相關資料的集合,一個數組實際上就是一連串的變數,陣列按照使用可以分為一維陣列、二維陣列、多維陣列。 陣列的優點:         不使用陣列定義100個整型變數:int i1;int i2;…int i100        

java 繼承、重載、重寫多態

如果 訪問修飾符 span exce eat 類型 使用方法 進行 擴展 首先是java 繼承、重載和重寫的概念   繼承:     繼承的作用在於代碼的復用。由於繼承意味著父類的所有方法亦可在子類中使用,所以發給父類的消息亦可發給衍生類。如果Person類中有一個ea

java程序編譯

文件 java nbsp 程序 分享 java程序 技術 虛擬 exe Java 源文件(.java)      使用 Java編譯器(javac.exe)編譯      生成 java字節碼文件(.class)      使用 解釋執行器(java.exe) 將字節碼

Java 繼承接口的關系

java 接口 繼承 在看Netty中NioEventLoop的UML圖時,感覺非常復雜,如下圖所示: 找不到重點,找不到主線,此時內心生無可戀。 從而,激發出困擾了我很久的一個問題:到底繼承與接口 啥關系? 這個問題,前幾天也請教過同事,也並沒有說出什麽關鍵

面向物件 3 屬性查詢繫結方法&python中一切皆為物件

屬性查詢與繫結方法 x='全域性' class LuffyStudent: school = 'luffycity' # stu1,'王二丫','女',18 def __init__(self,name,sex,age):

JAVA繼承多型》【Person、Student、Employee類】(注:此題在書上原題基礎上有修改)設計一個名為Person的類和它的兩個名為Student和Employee子類。

題目:【Person、Student、Employee類】(注:此題在書上原題基礎上有修改)設計一個名為Person的類和它的兩個名為Student和Employee子類。 每個人都有姓名和電話號碼。學生有年級狀態(大一、大二、大三或大四)。將這些狀態定義為常

Java繼承初始化

         在Java中,每一個類的編譯程式碼都存在於它自己的獨立檔案中。該檔案只有在需要時才會被載入,一般是在類初次使用時載入,這通常是指建立類的第一個物件或者第一次訪問類中的靜態方法或者靜態塊。 當JVM要載入一個類A時,如果發現這個類有父類B,那麼JVM首先載入

Java —— 繼承Object類

一、繼承 1、基本概念:繼承是類和類間的一種關係 2、繼承的作用:子類擁有父類的所有屬性和方法(private修飾則無效),可實現程式碼的複用 3、語法: class 子類 extends 父類 4、繼承的初始化順序: (1)初始化父類再初始化子

Java--繼承多型

何謂繼承 繼承的基本概念就不在贅述。 多型與is-a 在Java中,子類只能繼承一個父類,子類與父類之間會有is-a的關係,我們稱之為“是一種”的關係。我們要理解多型,必須知道我們操作的物件是“哪一種”東西。我們可以將自己當做編

Linux環境下makefile的建立編譯--簡單方法

Linux在命令列下敲寫Makefile檔案有時會顯得繁瑣且操作不便,因此我們可以採用在Windows下建立文字檔案(.txt)之後拖進VMware虛擬機器下的Linux系統。此時在命令列執行 make

java 繼承多型 note

在java中,類的繼承只能是單繼承。多重繼承可以通過實現多個介面實現。 UML 圖:統一建模語言:類圖。 呼叫父類構造方法:super語句必須位於子構造方法的第一行。 成員變數隱藏:子類成員變數和父類一樣時,會遮蔽父類中的成員變數。 子類覆蓋(override)父類方法:子類方法

java 繼承組合學習筆記

繼承 繼承實現了高度複用的同時,也帶來了一個嚴重的問題,破壞了父類的封裝性。封裝就是每個類應該把內容部資訊(屬性)和實現細節(方法)隱藏,值暴露必要的方法給其他類使用。但在繼承中,子類可以更改父類的屬性和方法,從而造成了子類和父類的高度耦合。 為了包裝父類的

Java 繼承多型實驗

 實驗講義 上機題目一:試以Point類為例,嘗試對Object類的clone()方法和equal()方法進行覆蓋。 上機題目二:現在輸入n個數字,以逗號分開、放入一個字串中,然後按升序和降序排

Java基礎】java繼承中的構造方法

小編現在學習了一下繼承中的構造方法,覺得還是總結一下比較好。【特點】1、子類的構造的過程中必須呼叫其基類的構造方法。2、子類可以在自己的構造方法中使用super(argument_list)呼叫基類的構

java繼承介面

在java中繼承是使用extends關鍵字來實現,不同於C++中的多繼承設計,java中的繼承只能是單繼承,父類可以使一般的類也可以是抽象類,抽象類就是被abstract關鍵字修飾過的類,在其中可以定

淺談java整合中的final方法重寫和過載問題

Question 1: 子類是否可以重寫父類的final方法,答案是:不可以! 父類Person: 子類SubPerson: Question 2: 子類是否可以過載父類的final方法,答案

Golang中StructDB中表字段通過反射自動映射 - sqlmapper

size http 維護 default arc struct 自動 地址 字符 Golang中操作數據庫已經有現成的庫"database/sql"可以用,但是"database/sql"只提供了最基礎的操作接口; 對數據庫中一張表的增刪改查等操作,必須手動編寫sql st