public class Person{
String name; //字符串 名字
int age; //int 年龄
private String secret="..."; //字符串 秘密
int height; // int 体重
//构造方法1
public Person(){} //可以创建一个空的对象,不提供参数
public Person(String name,int age, String secret){
this.name=name; //现在的=你赋值的
this.age=age;
this.secret=secret;
}
//构造方法1的重载 ,为了创建出不同属性信息的对象
public Person(String name,int age,int height){
this.name=name;
this.age=age;
this.height=height;
}
//构造方法1的重载 四个属性,有三个属性之前已经构造了
public Person(String name,int age, String secret,int height){
this(name,age,height); //在上面已经创建过可以写为this()
this.secret=secret;
}
//构造方达2
//可以外部访问的属性:get+属性名称
String getSecret(){
return secret;
}
String getName(){
return name;
}
int getAge(){
return age;
}
//可以外部修改定义的属性 set+属性名称
void setName(String name){
this.name=name;
}
void setAge(int age){
this.age=age;
}
void setSecret(String secret){
this.secret=secret;
}
String personInFo(){
return "这个人是"+name+",年龄是"+age+"岁,她的秘密是:"+secret;
}
//创建一个具体对象
public static void main(String[] args){
Person person1=new Person();
person1.name="张三";
person1.age=20;
person1.secret="没有秘密";
Person person2=new Person("李四",19,"也没有秘密");
Person person3=new Person("王五",18,"同样没有秘密");
//person4的值由person3的地址对应的内容给定,修改person4,相当于修改了person3的内容
//引用传递,在同一块地址
Person person4=person3;
person4.name="幂";
Person person5=new Person("迪丽",18,50);
//person变量引用指向空
//堆上的person3对象已经没有变量使用它
//但是person3依旧存在,还是占用空间,不做内存回收,由虚拟机自动回收。
//person3=null;
//person4=null;
System.out.println(person1.personInFo());
System.out.println(person2.personInFo());
System.out.println("我的名字是:"+person3.name+",曾经我只有"+person3.age+"岁。");
System.out.println(person4.personInFo());
System.out.println(person5.personInFo());
//创建一个匿名对象
new Person("匿名对象",18,"使用一次就丢弃");
System.out.println(new Person("匿名对象",18,"使用一次就丢弃").personInFo());
}
}