建立一个对象,如同声名一个变量(对象名): 将exp这个变量(对象名)定为Person数据类型
new后边是引用上边Person类的所有属性,像是为Person克隆出一个叫exp的对象,从此exp代表了Person的一切(映射),当Person变时,exp也会变
如果是普通变量,那类型基本固定,而如果是一个类,有多种数据类型是不确定的,所以要定义成一个对象来支持
class Person{
void say1(){
System.out.println("Who am I?");
}
void say2()
{
System.out.println("I am Jason!");
}
}
class Example{
public static void main(String[] args){
Person exp =new Person();//建立一个对象,如同声名一个变量(对象名)
exp.say1();//对象建立后,可以调用对象里的所有成员,这里调用的是Person下的say1
exp.say2();//尝试调用say2
//Person.say1();//能不能不进行对象建立,直接调用Person下的成员呢,答案是不能。除非是静态方法,可跳转致《关于STATIC之静态变量和静态方法的简单理解》了解
//exp=null;//这里是将exp这个对象清空
//exp.say1();//还调用exp里面的成员,就会报空指针错误,因为exp这个对象中所有的内容都被置为空了
}
}
/**建立一个对象,如同声名一个变量(对象名): 将exp这个变量(对象名)定为Person数据类型
new后边是引用上边Person类的所有属性,像是为Person克隆出一个叫exp的对象,从此exp代表了Person的一切(映射),当Person变时,exp也会变
如果是普通变量,那类型基本固定,而如果是一个类,有多种数据类型是不确定的,所以要定义成一个对象来支持*/
class Student{
private String name;
private int age;
private String Adr;
public void setName(String stuName){//调用时要传入参,类型为String,如果不输或者类型不对会报错
name=stuName;
}
public void setAge(int stuAge){ //调用时要传入参,类型为int,如果不输或者类型不对会报错
if(stuAge<=0){
System.out.println("年龄不合法!");
} else{
age=stuAge;
}
}
public void getAdr(){ //调用时不要传入参,否则报错
Adr="中国"; //如果只赋个值,其实也可以在定义变量时给默认值,效果一样,后方就可以不调用
}
public void introduce(){
System.out.println("大家好,我叫"+name+",今年"+age+"岁!"+"我住在"+Adr);
}
/*public int getAge(){
return age;
}
public String getName(){
return name;
}*///这一段要不要好像没什么不一样
}
public class Example04{
public static void main(String[] args){
Student stu= new Student();
stu.setAge(3);//调用方法,传入入参
stu.setName("张三");//调用方法,传入入参
stu.getAdr();//调用方法,不用传参,否则报错,也不能不调,否则为空
stu.introduce();
}
}