當前位置:首頁 » 文件傳輸 » 嵌套類可以訪問外部類的成員
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

嵌套類可以訪問外部類的成員

發布時間: 2022-02-05 14:35:21

A. c# 嵌套類可以訪問外圍類的所有成員 包括private成員怎麼理解

private :只能由1.該類中的函數、2.其友元函數訪問。
不能被任何其他訪問,該類的對象也不能訪問。
protected :可以被1.該類中的函數、2.子類的函數、以及3.其友元函數訪問。
但不能被該類的對象訪問。
public :可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。
internal :只能在項目中訪問,跨項目就訪問不了了。

B. C++類嵌套,嵌套類訪問外圍類的變數的問題拜託各位大神

#include <iostream> using namespace std; class test_class { public: test_class():count(this) { cout<<"class init, num address:"<<&num<<endl; num = 0; } void setNum(int n){ num = n; } int* getNumAddress(){ return # } class _count { public: _count(test_class* p){ parent = p; } void set(int n) { cout<<"set num, num address:"<<parent->getNumAddress()<<endl; parent->setNum(n); } private: test_class* parent; }; _count count; private: int num; }; int main( ) { test_class tcls1, tcls2; cout<<"tcls1 set num:"<<endl; tcls1.count.set( 20 ); cout<<"tcls2 set num:"<<endl; tcls2.count.set( 10 ); return 0; }

求採納

C. 深入理解Java中為什麼內部類可以訪問外部類的成員

內部類本身被當做外部類成員,並且必須依託於外部類實例,所以能訪問。
但是靜態內部類特殊,雖然叫內部類但是它一點也不「內部類」,應該叫嵌套類。
他就沒有上面的特點,這都是內部類一起的知識,要知道區別

D. Java中內部類可以訪問外部類的成員,請問這樣算不算是破壞了封裝性

內部類本質上就是外部類的一個成員,享有成員一樣的共性。
就好比抽象類,也是類,具有類的所有共性。然後因為abstract所以具有了自己的特性。
所以內部類具有成員的一切共性,也具有類的一切共性,同時也具有自己的一些特性。

類的成員之間可以互相訪問,所以這個內部類也可以訪問外部類的成員。封裝的目的就是為了代碼的復用、增強安全性、實現模塊化等,其實內部類嵌入到裡面也是為了這個目的。不能說是破壞了這個封裝原則吧。

內部類也有說內嵌類的,這種內嵌類在SDK中還是不少的。JDK中記得不太清楚了,ADK(安卓的SDK)中比如有LinearLayout.LayoutParames、ViewGroup.LayoutParames、SharedPreferences.Editor等都是內部類的體現。

E. 成員內部類可以訪問外部類的成員變數嗎

首先,內部類和外部類其實是處於同一個級別,內部類不會因為定義在方法中就會隨著方法的執行完畢而跟隨者被銷毀。問題就來了,如果外部類的方法中的變數不定義final,那麼當外部類方法執行完畢的時候,這個局部變數肯定也就被GC了,然而內部類的某個方法還沒有執行完,這個時候他所引用的外部變數已經找不到了。如果定義為final,java會將這個變數復制一份作為成員變數內置於內部類中,這樣的話,由於final所修飾的值始終無法改變,所以這個變數所指向的內存區域就不會變。

F. 嵌套的類

嵌套的類。
在C++中,對類進行嵌套有助於隱藏名稱,並便於代碼的組織(但C++的「命名空間」已使名稱的隱藏顯得多餘)。Java的「封裝」或「打包」概念等價於C++的命名空間,所以不再是一個問題。Java 1.1引入了「內部類」的概念,它秘密保持指向外部類的一個句柄——創建內部類對象的時候需要用到。這意味著內部類對象也許能訪問外部類對象的成員,毋需任何條件——就好象那些成員直接隸屬於內部類對象一樣。這樣便為回調問題提供了一個更優秀的方案——C++是用指向成員的指針解決的。

G. java嵌套類可以訪問頂層類的任何變數么

java作用域public ,private ,protected 及不寫時的區別
在說明這四個關鍵字之前,我想就class之間的關系做一個簡單的定義,對於繼承自己的class,base class可以認為他們都是自己的子女,而對於和自己一個目錄下的classes,認為都是自己的朋友。

1、public:public表明該數據成員、成員函數是對所有用戶開放的,所有用戶都可以直接進行調用

2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。

3、protected:protected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private。

4、default 則在包內包外的子類都可見。

作用域 當前類 同一package 子孫類 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

H. java中,內部類的private成員,外部類可以訪問嗎

私有變數只允許定義該變數的類或者方法訪問,而不允許其他方法或者類直接訪問。

I. 嵌套類(或內部類)怎樣訪問包含類(或外部類)麻煩告訴我

嵌套類型(或內部類型)可訪問包含類型(或外部類型)。 若要訪問包含類型,請將其作為構造函數傳遞給嵌套類型。 例如:

J. Java中靜態內部類的成員可以訪問外部類的靜態變數嗎

可以的,靜態方法只能調用靜態方法,非靜態方法也可以調用靜態方法,例子如下:

package com..stati.pack;

public class staticStri {

public String getNames(){
System.out.println("這是一個非靜態方法");
return null;
}

public static String getNamesList(){
System.out.println("這是一個靜態方法");
return null;
}

public void say(){
getNames();
getNamesList();
}

public static void show(){
getNamesList();
}
}