黑马程序员技术交流社区

标题: 一个关于面对对象的问题 [打印本页]

作者: 张峰    时间: 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();

                        cat.furColor = "red";
                        cat.age = 2;
                        cat.name("cat");
                        cat.shout("miaomiao");

                        dog.furColor = "yellow";
                        dog.age = 10;
                        dog.name("dog");
                        dog.shout("wangwang");
                }
        }
        说明:Animals 类封装了动物的一些属性,包括毛色,年龄及名字,叫声方法,当声明不同对象时,可以根据声明对象的具体特点,来修改这些属性和方法。
        如果不采取这样的方式,是不是每次定义一种动物,都要写毛色,年龄,名字,年龄呢?如果动物的属性和方法非常多呢?如果要定义的动物的种类也非常多呢?以上的这种方式,就很好的解决了这个问题。
作者: 李叶    时间: 2011-8-30 16:55
这个问题应该分成两个部分来看

首先,要先弄明白对象和类的关系
举个最简单的例子:你和人的关系是什么?
答案很简单,你是一个人
其实这句话就已经说明了对象和类的关系
由于“人”是一种具有相同特性生物的统称,因此“人”就是一个类
而“你”是在现实生活中真实存在的一个人,所以“你”就是一个“人”的对象
所以,对象和类的关系就是这样
类就是具有某些相同特性的事物的统称
而对象就是拥有某个类全部特性的一个真实存在的事物

下面再来回答你这个问题吧
这个问题的答案是:
下面定义的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各位!理解了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2