面试题16  关于实例成员和类成员区别

考题题干

下面关于实例成员的说法,哪些是正确的?

A.实例成员也被称为实例变量

B.实例成员属于类成员

C.实例成员隶属于实例,但不隶属于整个类

D.实例成员包括实例变量和实例方法

E.实例成员变量就是静态变量

试题分析

这道题主要考查什么是实例成员?什么是类成员?两者之间有着怎样的关系?又有着怎样的区别?

1.实例成员

实例成员包括实例成员变量和实例成员方法,实例成员变量(对象的字段)和方法(对象的方法)是隶属于对象的,实例变量的值代表了该对象的状态,实例成员方法代表了该对象的行为。只有创建了对象之后才能访问实例成员变量和实例成员方法,通过"对象名.变量名(方法名)"的方式可以访问实例成员,代码如下:

public class NameClass {
Stringname="Lily";
intage=12;
public void print(){
System.out.println("姓名:");
System.out.println("年龄:");
}
public static void main(String[] args){
NameClassnc=newNameClass();
nc.print();
System.out.println(nc.age+" "+nc.name);
}
}

在这个程序中name和age就是实例成员变量,而print()方法就是实例成员方法。因为在static main()方法中是通过创建NameClass类的对象nc来访问的。

2.类成员

类成员(静态成员)需要用关键字static标识,类成员包括类成员变量和类成员方法,类成员是隶属于类的,意思是说通过类名可以直接访问类成员变量或调用类成员方法,即使没有创建对象,也能够引用类成员,当然类成员也可以通过对象引用。它既可以通过"对象名.变量名"方式访问,也可以通过"类名.变量名"的方式访问。它们是完全等价的。代码如下:

public class BB {
private static intnum=20;
private static Stringname="vivi";
public void call() {
BB.print();
new BB().print();
System.out.println(BB.name + "," + BB.num);
}
public static void print() {
System.out.println("Hellow China");
}
}

在这个程序中num和name就是类成员变量,而print()方法和call()方法就是类成员方法,因为任何的方法中都可以通过类名.变量名(BB.name)和对象名.方法名(new BB().print())访问。

下面列出成员的相关解释,供大家参考学习,如图2.20所示。成员名称及其说明如表2.1所示。

java类的成员数 java实例成员与类成员_java类的成员数

图2.20  成员结构图

表2.1  成员名称及其说明

成员名称

成员含义

实例成员

指的是对象的实例变量和实例方法,只能通过对象

引用加以访问或者调用

实例变量

实例变量只有在类的实例化时才分配的字段,即当

创建类对象的时候,系统才分配这个字段,也叫做非静态字段

实例方法

一种隶属于类实例的方法,隶属于相同类的

所有对象分享方法的实现

静态成员

指的是隶属于类的静态方法和静态变量,静态成员可

以通过类名或者对象引用加以访问和调用

静态变量

一种载入类时就需要进行分配的字段,静态变量隶属于类,

但是不属于该类的任何对象,所以成为静态字段或者类变量

静态方法

一种隶属于类但是不属于该类任何对象的方法,叫做类方法,

同样可以通过类名或者对象引用加以访问和调用

参考答案

CD