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();
}
}