类,英文名叫class。基本上对应的就是语言里的名词。
比如,房子、人、树、花、汽车等等,这些名词,这些可以定义成类。
以房子为例,作为一个房子,它一定有相应的属性,比如房顶、墙、门、窗等等,把这些属性当作房子这个表格(如前所学,类就对应表格)的列。
这样,就使用这个房子表格,就可以描述很多种具有不同数量的门、窗等的房子了。
具体到某一行,就对应一个具体的描述好的房子,这就是房子这个类里的一个对象,又叫实例,即object或者instance。
所以,一个类,就是一个描述一些共有特征的模板。比如这个房子表格一样。它就是一个模板。模板内的属性的具体内容可以变(比如在窗的这一列,不同行,可以有不同的数量的窗),但是这个模板一旦定义好就不会变。
总结:
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共
同的属性、方法。
public class Student {int id;int age;String name;public void study(){System.out.println("正在学习");}public void kickball(){System.out.println("踢球中");}public static void main(String[] args){Student s1 = new Student();System.out.println(s1.id);System.out.println(s1.age);System.out.println(s1.name);s1.id=1;s1.name="jason";System.out.println(s1.id);System.out.println(s1.name);s1.study();s1.kickball();}}
运行结果:
0
0
null
1
jason
正在学习
踢球中
上面就是先创建一个学生类,然后创建一个类的对象学生1(S1)的过程。这其中特别值得注意是语句: Student s1 = new Student();
创建一个学生类,相当于创建了一个学生表,这个表只有表头,也就是只有各列的列名(属性),表本身是空的,没有行,也就说是还没有对象。
用这个new语句创造了一个行,也就是创造了一个对象,这很容易理解。
上面这段代码在内存中具体是怎样实现的,如下图所示:
第一步,先在方法区,把整个类信息,也就是这个Student类的全语信息,按一定规则摆放好。
第二步,在stack,先入main,从这里开始执行。执行的第一步,先传递args的参数,这里是空的。然后先用new,在堆区创造一个空的类对象,并将其起始地址指向s1。
第三步,继续往下执行即可。
第四步,如果要创建新的对象如s2、s3,依此类推即可。