java中的成员变量、类变量,成员方法、类方法各是什么,怎么区分,

java中的成员变量、类变量,成员方法、类方法各是什么,怎么区分,,第1张

成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用。

类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性。而且所有的实例都可以修改这个类变量的值(这个类变量没有被final修饰的情况),而且访问类变量的时候不用实例,直接用类名的方式就可以。

成员方法:包括实例方法和类方法,用static的方法就是类方法,不用static修饰的就是实例方法。实例方法必须在创建实例之后才可以调用。

类方法:和类变量一样,可以不用实例,直接用类就可以调用类方法。

举例:

class Demo{ 

    int x;       //x是实例变量,也是成员变量 

    static int y; //y为类变量,也是成员变量     

    public int x() {     //该方法为实例方法,是成员方法 

        return x;   

    } 

   public static void setX(int x1){ //该方法为类方法,也是成员方法 

            x = x1;    

   } 

}

(CMDIFrameWndEx)AfxGetApp()->GetMainWnd()

用afxgetapp取得theApp,然后得到主窗口,接着转换类型就行,

包含了CMainFrame所在的头文件,就可以直接转换成CMainFrame,

没包含的话也可以转换成CMainFrame的基类,毕竟一般是从mfc里直接继承的,已经被头文件包含到所有文件了,

如果需要用 后添加的 函数 或 变量 还是包含下主窗口的头文件

您好,提问者:

如果这个类的成员、方法定义为private只支持本类访问。

public、protected、defualt(默认不写)继承、同包是都可以访问到的。

  可以封装成方法,对外暴露,例如:

public class Test{

    private String name;

    //提供公共的赋值方法

    public void setName(String name){

        thisname = name;

    }

    //提供公共的获取方法

    public String getName(){

       return name;

    }

}

总所周知,类中的private属性的成员变量在类外是无法访问的,今天我们探讨的就是如何在类外访问private属性的成员变量。

我们先来看一个简单的例子:

class STU

{

public:

STU()

{

x = 5;

y = 10;

}

private:

int x;

int y;

};

int main()

{

STU t;

intp = (int)&t + 1;

return 0;

}

通过上面的代码我们可以知道,方法是把类对象的地址强制转化为int类型,因为类对象里存储的只是成员变量,所以通过对指针的 *** 作可以访问到private类型的成员变量。

接下来还有一个例子:

class STU

{

public:

STU()

{

c = 'f';

y = 10;

}

private:

char c;

int y;

};

int main()

{

STU t;

intp = (int)((char)&t + 4);

cout << p << endl;

return 0;

}

这段代码中最重要的就是intp = (int)((char)&t + 4);

因为第一个数据是char类型的,所以要把对象的地址转化为char型,对象中存在两种类型的数据,需要考虑内存对齐,所以当要访问下一个int型变量的时候,指针需要加4,而不是加1。最后要取到int型的变量,还是要把地址强转为int 。

写了个例子,请仔细查看代码,具体过程需要你自己对照java API 再研究,

先定义了一个普通的学生类,如下:

public class Student {

private int id;

private String name;

private int age;

private String[] aiHao;

public int getId() {

return id;

}

public void setId(int id) {

thisid = id;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

thisage = age;

}

public String[] getAiHao() {

return aiHao;

}

public void setAiHao(String[] aiHao) {

thisaiHao = aiHao;

}

}

对学生类进行反射

public class Test3 {

public static void main(String[] args) {

Student s = new Student();

ssetId(1);

ssetName("张三");

ssetAge(23);

ssetAiHao(new String[] { "足球", "篮球", "上网" });

try {

// 获取所有的变量

Field[] fields = StudentclassgetDeclaredFields();

// 循环处理变量

for (Field f : fields) {

fsetAccessible(true);

Object value = fget(s); // 取变量的值

Systemoutprint("变量名称为:" + fgetName());

if (valuegetClass()isArray()) { // 判断是否是数组

Object[] arr = (Object[]) value; // 装换成数组

Systemoutprintln(",变量值等于:" + ArraystoString(arr));

// 这里还可以做额外处理,判断数组的类型 如下面注释的代码

/

for (Object a : arr) {

Systemoutprintln("参数类型" + agetClass()getName());

// 同样运用反射的机制做额外处理

}

/

} else {

// 非数组类型,普通处理

Systemoutprintln(",变量值等于:" + value);

}

fsetAccessible(false);

}

} catch (Exception e) {

eprintStackTrace();

}

}

}

以上就是关于java中的成员变量、类变量,成员方法、类方法各是什么,怎么区分,全部的内容,包括:java中的成员变量、类变量,成员方法、类方法各是什么,怎么区分,、MFC中如何获取在CMainFrame中定义的成员变量、java中如果有一个A类,怎样从b类访问a中的私有成员变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9636382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存