8.4 属性

类是一类事物的抽象,类的属性就是用来描述这个事物。类的属性是这样的:
1.属性的定义就类似定义变量,定义的位置在class的大括号下,不能定义在任何函数里面,那就变成函数的内部变量了。
2.属性值可以被类里面的方法(方法就是函数)读取、修改。
这部分下一节会介绍。
public class Mobile{
    String name;
    String mon;
}
属性是在有对象的情况下才有意义的,所以要修改某个属性,也必须是修改某个对象的属性。
public class Mobile{
    String name;
    String mon;
    public static void main(String[]args){
        Mobile mobile1=new Mobile();
        mobile1.name="iphone 7 plus";
        Mobile mobile2=new Mobile();
        mobile2.name="华为Mate pro20";
    }
}
上面代码出现的".",我们并不陌生,在System.out.println()里面我们就多次使用,我们可以直接用“的”来理解。
例如上面的mobile.name就理解为“mobile的name“。
在编程环境(例如eclipse中)对象之后接一个点“.”,如果这个对象有可以访问的属性和方法,那么就会弹出一个框,如下图:
 mobile1的name属性和mobile2的name属性是互相独立的。只有对象被定义后,分配了内存,属性才能存在。 还有一种属性,是所有对象共享的,这类属性需要在前面加关键字static,称为静态属性,而对应的,上面提到的就是非静态属性,下面的T就是静态属性,关于静态属性,后面章节有更详细的讲解。
public class Mobile{
    String name;
    String mon;
    static String T;
}
类的属性是怎么设计的呢?属性是用来描述这个类的,例如学生,可能需要学号、姓名、班级这些信息,可是还有很多,例如身高、体重、籍贯、党员、家庭住址,父母联系电话等等。到底设计一个类,需要多少个属性,才够准确呢? 简单的说,要看这个类用在什么环境,环境需要用的属性,这个类就要有。例如这个学生类,是在一个真实的学籍管理系统里,那恐怕上面的属性还是不够的,但假如这个学生类,只是我们用来学习类的设计的一个例子,那么随便一个学号、班级、姓名就够了。也就不需要抽象出这么多属性了。

练习题

  • 判断下面类的定义和使用是否正确
    1. (2分) [判断]
    public class Mobile;String name;String mon;
    
    2. (2分) [判断]
    public class Computer{
            String name;
    }String device;
    
    3. (2分) [判断]
    public class Book{
            String name;
            String isbn;
            String name;}
    
    4. (2分) [判断]
    public class TV{    int channel;    String mon;    public static void main(String[]args){        String mon="25寸曲面屏";        System.out.println(mon);    }}
    
    5. (2分) [判断]
    public class TV{
            int channel;
            String mon;
            static int NUM=100;
            public static void main(String[]args){
                    TV.NUM=105;
                    TV tv=new TV();
                    tv.mon= "65寸";
                    System.out.println(TV.NUM+tv.mon);
                }}
    
    6. (2分) [判断]
    public class Book{
            String name;
            String isbn;
            public static void main(String[]args){
                    String author;
                    Book book=new Book();
                    book.name= "Java编程思想";
                    book.author= "Eckel Bruce";
                }}
    
  • 编程题
    1.定义一个类College (10分) [编程]
    表示学校里面的二级学院,例如信息工程学院,工商学院
    有以下属性,两个数量用int类型,其他变量用String类型
    name,学院名
    studentNum,学生数量
    teacherNum,教师数量
    还有一个静态属性,学校名SCHOOL

    注意,此题不需要main函数