-
java类成员和实例成员,面试题16 关于实例成员和类成员区别
2021-04-08 12:04:56面试题16 关于实例成员和类成员区别考题题干下面关于实例成员的说法,哪些是正确的?A.实例成员也被称为实例变量B.实例成员属于类成员C.实例成员隶属于实例,但不隶属于整个类D.实例成员包括实例变量和实例方法E...面试题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所示。
图2.20 成员结构图
表2.1 成员名称及其说明
成员名称
成员含义
实例成员
指的是对象的实例变量和实例方法,只能通过对象
引用加以访问或者调用
实例变量
实例变量只有在类的实例化时才分配的字段,即当
创建类对象的时候,系统才分配这个字段,也叫做非静态字段
实例方法
一种隶属于类实例的方法,隶属于相同类的
所有对象分享方法的实现
静态成员
指的是隶属于类的静态方法和静态变量,静态成员可
以通过类名或者对象引用加以访问和调用
静态变量
一种载入类时就需要进行分配的字段,静态变量隶属于类,
但是不属于该类的任何对象,所以成为静态字段或者类变量
静态方法
一种隶属于类但是不属于该类任何对象的方法,叫做类方法,
同样可以通过类名或者对象引用加以访问和调用
参考答案
CD
【责任编辑:云霞 TEL:(010)68476606】
点赞 0
-
java 实例方法 静态方法的区别_java 静态方法和实例方法的区别
2021-03-06 21:02:43静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------...静态方法和实例方法的区别主要体现在两个方面:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------hasStaticMethod.java-----------------
public class hasStaticMethod{
//定义一个静态方法
public static void callMe(){
System.out.println("This is a static method.");
}
}
下面这个程序使用两种形式来调用静态方法。
//-----------invokeStaticMethod.java-----------------
public class invokeStaticMethod{
public static void main(String args[]){
hasStaticMethod.callMe(); //不创建对象,直接调用静态方法
hasStaticMethod oa = new hasStaticMethod(); //创建一个对象
oa.callMe(); //利用对象来调用静态方法
}
}
程序两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
还有一个很典型的代表就是数组的处理工具Arrays
2、静态方法访问成员变量示例。
//-----------accessMember.java-----------------
class accessMember{
private static int sa; //定义一个静态成员变量
private int ia; //定义一个实例成员变量
//下面定义一个静态方法
static void statMethod(){
int i = 0; //正确,可以有自己的局部变量sa = 10;
//正确,静态方法可以使用静态变量
otherStat();
//正确,可以调用静态方法
ia = 20; //错误,不能使用实例变量
insMethod(); //错误,不能调用实例方法
}
static void otherStat(){}
//下面定义一个实例方法
void insMethod(){
int i = 0; //正确,可以有自己的局部变量
sa = 15; //正确,可以使用静态变量
ia = 30; //正确,可以使用实例变量
statMethod(); //正确,可以调用静态方法
}
}
本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
-
java静态实例_java静态方法和实例方法的区别
2021-03-05 20:34:56静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------...静态方法和实例方法的区别主要体现在两个方面:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------hasStaticMethod.java-----------------
public class hasStaticMethod{
//定义一个静态方法
public static void callMe(){
System.out.println("This is a static method.");
}
}
下面这个程序使用两种形式来调用静态方法。http://www.cdtarena.com/class.html
//-----------invokeStaticMethod.java-----------------
public class invokeStaticMethod{
public static void main(String args[]){
hasStaticMethod.callMe(); //不创建对象,直接调用静态方法
hasStaticMethod oa = new hasStaticMethod(); //创建一个对象
oa.callMe(); //利用对象来调用静态方法
}
}
程序两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
还有一个很典型的代表就是数组的处理工具Arrays
2、静态方法访问成员变量示例。
//-----------accessMember.java-----------------
class accessMember{
private static int sa; //定义一个静态成员变量
private int ia; //定义一个实例成员变量
//下面定义一个静态方法
static void statMethod(){
int i = 0; //正确,可以有自己的局部变量sa = 10;
//正确,静态方法可以使用静态变量
otherStat();
//正确,可以调用静态方法
ia = 20; //错误,不能使用实例变量
insMethod(); //错误,不能调用实例方法
}
static void otherStat(){}
//下面定义一个实例方法
void insMethod(){
int i = 0; //正确,可以有自己的局部变量
sa = 15; //正确,可以使用静态变量
ia = 30; //正确,可以使用实例变量
statMethod(); //正确,可以调用静态方法
}
}
本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。 main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
-
java实例方法和静态方法的区别
2015-09-06 12:24:11静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象...原文:http://www.cnblogs.com/shenliang123/archive/2011/10/27/2226923.html
静态方法和实例方法的区别主要体现在两个方面:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------hasStaticMethod.java----------------- public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
下面这个程序使用两种形式来调用静态方法。
//-----------invokeStaticMethod.java----------------- public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
程序两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
还有一个很典型的代表就是数组的处理工具Arrays
2、静态方法访问成员变量示例。
//-----------accessMember.java----------------- class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }
本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
2.静态方法为什么不能访问实例变量。
因为java静态成员是在类加载的时候初始化的,实例成员是在类实例化的时候或者说创建对象的时候初始化的。而调用静态方法的时候,实例成员可能还没有初始化,如果静态方法可以访问实例成员,那么就可能会访问不存在的变量或方法,所以静态方法只能访问静态成员不能访问实例成员,实例方法是可以访问静态成员和实例成员的,因为静态成员是先于实例成员存在的。同样的道理,在静态方法中是不能出现this,super等与对象实例有关的关键词的。 静态方法的利弊,利:类和所有的对象实例共享一份数据,而不是每个对象单独享有数据的一个副本,节省空间;弊:生命周期过长,同时所能访问的成员受限。
原文:http://www.thinksaas.cn/group/topic/95653/
-
java实例方法_java 静态方法和实例方法的区别
2021-02-12 09:23:19静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------... -
java 静态方法 实例方法的区别_java 静态方法和实例方法的区别
2021-03-06 20:56:44静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------... -
java 静态方法 实例方法的区别_Java 静态方法和实例方法区别详解
2021-03-21 11:00:41Java 静态方法和实例方法区别详解这篇文章主要为大家详细介绍了 Java 静态方法和实例方法的区别, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下静态方法和实例方法的区别主要体现在两个方面:在外部调用静态方法... -
JAVA成员变量和静态变量的区别以及静态方法不能调用非静态方法的原因
2019-07-28 18:04:52静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。 静态方法是属于类的,即静态方法是随着类的加载而加载的,在加... -
java 静态方法与实例方法的区别_java 静态方法和实例方法的区别
2021-03-09 22:07:12静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------... -
Java中静态成员类和非静态成员类的区别
2021-03-10 16:38:52静态成员类和非静态成员类都可以访问外围类的所有成员,包括那些声明为private的成员。 两者非常相似,主要静态成员类多累static修饰词。 正因此,非静态成员类的每个实例都隐含着与外部类的一个实例所相关联。在非... -
java静态方法的区别_Java静态方法和实例方法区别详解
2021-02-12 14:07:19静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例下面这个程序使用两... -
java的静态成员和静态方法,非静态内部类和静态内部类的区别
2017-06-13 10:03:42这里的静态,指以static关键字修饰的,包括类,方法,块,字段。非静态,指没有用static 修饰的。...静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也 -
java 静态方法和实例方法的区别
2019-09-30 02:56:12转自 java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面...静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例... -
java method 静态方法_java 静态方法和实例方法的区别
2021-02-28 06:20:13静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------... -
java 静态方法与实例方法的区别_Java 静态方法和实例方法有何不同
2021-03-09 22:06:57●静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。//-----------hasS... -
Java 静态方法和实例方法的区别
2019-09-16 15:29:41静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名....静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法... -
java中ll 和_Java中静态方法和实例方法的区别
2021-02-27 14:58:11静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例。//------... -
java 静态 方法_Java静态方法和实例方法区别详解
2021-02-12 12:26:01静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。下面几个例子展示了这一区别。1、调用静态方法示例//-------... -
读effective java中的静态成员类和非静态成员类的区别
2014-08-12 23:36:58嵌套类就是指被定义在另一个类内部的类。分为四种:静态成员类、非静态成员类、匿名类...两者非常相似,主要区别在于静态成员类多了static关键字。 正因此,非静态成员类的每个实例都隐含着与外围类的一个外围