class 为类的关键字,是用来声明类。在类中有成员变量、构造器(或构造方法)和方法。
用汽车设计图来打比方,类就是汽车设计图,成员变量是汽车的部件(如发动机、车门)或者属性(如车名),方法是汽车的功能(如开车门,打开发动机),也可以是虚拟的功能(如获取车名)。构造器就是构造一辆车(构造对象)。
public class Test{
public static void main(String [] args){
Car car1 = new Car("奥拓","奥拓的门编号","奥拓的发动机编号");
// car1是实例名。第一个Car 是代表的类名,用来声明car1是Car类的实例。
//new 后面的Car是调用的构造方法Car(String n,String d,String e)
car1.openDoor();
car1.openEngine();
System.out.println(car1.getName());
}
}
class Car{ //车辆设计图
private String name; //车名
private String door; //车门 车门可能是其他类型,现在暂时用String类型
private String engine; //发动机 发动机也应该是Engine类 没有创建Engine类 现在也暂时用String 类型
public Car(){ //无参构造器 用来创建汽车实例
}
public Car(String n,String d,String e){ //无参构造器 用来创建汽车实例 并初始化成员变量
name = n;
door = d;
engine = e;
}
public void openDoor(){ //开门方法
System.out.println("打开车门"); //打开门功能的实现
}
public void openEngine(){ //开发动机的方法
System.out.println("打开发动机"); //打开发动机功能的实现
}
public void setName(String n){ //setName方法 更改车名
name = n;
}
public String getName(){ //getName方法 获取车名
return name;
}
//....door 和 engine 的get、set方法 类似
}
一般情况下(非静态内部类,或类中无静态变量、静态方式时)
类可以调用:构造器
对象可以调用:方法、成员变量(具体的根据权限修饰符来判断)
类是不可以直接调用成员变量和方法的,这就好比设计图是没法知道门的实际值的(如门具体的编号),也无法直接执行开门的功能。类只能设计成员变量(门的类型,上述例子中是 String 类)和方法(功能)。另外在逻辑上可以讲清楚:因为一个类的实例可能有很多,如果类可以直接调用其成员变量和方法,程序将不知道该调用哪个实例的成员变量和方法。构造器只能被类调用,用来创建创建实例对象(构造一个车辆)。
而实例对象是可以调用方法的,在一定的条件下也可以调用成员变量(具体的根据权限修饰符来判断)。实例对象的成员变量已经被赋值(或被初始化),可以被获取到。其方法也能被具体的对象执行。对象是不能调用构造器的,因为它不具备创建对象的功能。