先写段代码:
这是一个很经典的代码例子
public class People {
private String name;
private String id;
//无参构造器
public People(){
this("","");
}
//有参构造器
public People(String name,String _id){
this.name = name;
id = _id;
}
public void sayHello(){
System.out.println("Hello! My name is " + name);
}
public void sayHello(String name){
System.out.println("Hello, " + name+ "! My name is " + this.name);
}
//get & set methods
public void setName(String name){
this.name = name;
}
public void setId(String id){
this.id = id;
}
public String getName(){
return this.name;
}
public String getId(){
return this.id;
}
}
从上面代码解释几个非常困惑新手的问题:
第一个问题:
类 People 类 首先通过private关键字定义了两个私有的成员变量,下面很多新手就很困惑为什么要定义get,set方法。这里会完美解决你的困惑:
由于这两个成员变量是私有的,为了使得能够在类的外部获取或修改这些信息,就必须在类中定义四个get、set方法。通过外部类调用get,set方法来获取这些信息
第二个问题:
构造方法是一种特殊的方法,其作用是构造并初始化对象,在一个类中构造方法可以定义多个。
public People(String name,String _id){
this.name = name;
id = _id;
}
People jack = new People("Jack","0001");
People jack = new People(“Jack”,”0001”);
这个表达式中的
new People(“Jack”,”0001”);
是去调用
public People(String name,String _id); 这个方法。
也就是说你不能凭空的出现一个对象,你要去复制给类中的成员变量,然后用那些变量去进行操作。
要深深体会new People和public People这两个中的People的联系
第三个知识点是:
Java提供了大量的预定义类可供使用,同时程序中可能还会使用第三方提供的或者自己编写的属于其它包的类
例如在People类中还可以定义一个新的成员变量birthday,而日期可以使用Java提供的预定义类Calendar实现。以下代码给出了实现方法。
import java.util.Calendar;
public class People {
private String name;
private String id;
private Calendar birthday;
//构造方法
……
//sayHello方法、get & set 方法
……
}//end of class
下面是重点:
这里我想说的是:Java的标准库中的类可以直接当成一个数据类型用
private String name;
private Calendar birthday;
这两句代码中的 String 和 Calendar 都是标准库中的类,所以可以直接当成数据类型定义成员变量,这是很容易忽视的一点。