标题: 一个关于面对对象的问题 [打印本页] 作者: 张峰 时间: 2011-8-30 14:58 标题: 一个关于面对对象的问题 class person
{
int age;
void shout()
{
//int age=60;
System.out.println("my age is"+age);
}
public static void main(String [] args)
{
person p1= new person();
person p2= new person();
p1.age=-30;
p1.shout();
p2.shout();
}
在面对对象的课程中,我有一个问题就是:定义的person这个类 ,与下面的
person p1= new person();person p2= new person();之间的关系还有含义?作者: 匿名 时间: 2011-8-30 15:52
1、Person 是一个自己定义的实体类,该类包含一个age的成员变量和一个shout()方法;
2、p1和p2 是声明的两个Person类的对象,同样具有了age属性和shout()方法;
3、三者之间的关系,以一个小例子说明:
class Animals{
String furColor;
int age;
public void name(String name)
{
System.out.println("My Name is " + name);
}
public void shout(String s)
{
System.out.println(s);
}
}
class Test{
public static void main(String [] args)
{
Animals cat = new Animals();
Animals dog = new Animals();
下面再来回答你这个问题吧
这个问题的答案是:
下面定义的Person p1和p2除了是Person这个类的对象之外
和Person这个类就完全没有任何关系了
以下两种写法是完全相同的
你的写法:[code=java]class person {
int age;
void shout() {
System.out.println("my age is"+age);
}
public static void main(String [] args) {
person p1= new person();
person p2= new person();
p1.age=-30;
p1.shout();
p2.shout();
}
} [/code]等价的写法:[code=java]class person {
int age;
void shout() {
System.out.println("my age is"+age);
}
}
class Test {
public static void main(String [] args) {
person p1= new person();
person p2= new person();
p1.age=-30;
p1.shout();
p2.shout();
}
}[/code]是不是第二种写法看上去就明白了?第一种写法和第二种写法的含义完全一样作者: 匿名 时间: 2011-8-30 16:58
你可以把类当成是当成是一张设计图,就像你设计了一个Person的类,这个类有age的属性和shout的方法,但是无论怎样,他都是虚的的,不是真的存在,只有当你用这张设计图new出一个p1和p2出来时,p1和p2就是你根据这张设计图做出来的东西,是真实存在的,在内存中,那样你才能对其进行操作,由于p1和p2都是你根据同一张设计图做出来的东西,所以p1和p2具有Person类里面的属性和方法。也就是p1和p2是属于Person这个类的,这样容易理解把。作者: 匿名 时间: 2011-8-31 17:00
thanks各位!理解了!