5.4构造方法与匿名对象

构造方法是在类中定义的一种特殊方法,主要功能是完成对象属性的初始化操作。
构造方法是在实例化对象的时候使用,而普通方法是在实例化对象产生之后使用的。
构造方法的定义:
构造方法的名称和类名称保持一致。
构造方法不允许有返回值类型声明。
一个类中至少一个构造方法

··如果没有声明,则会自动生成一个无惨函数。

class Preson{   //类名称
   public Preson(){   //无惨构造
   }
}

范例:定义构造方法为属性初始化

class Eighty {
       private  String name;
       private int age;
       private String home;
       public void setName(String newname) {
    	   name=newname;
       }
       public String getName() {
    	   return name;
       }
       public void setAge(int newage) {
    	   age=newage;
       }
       public int getAge() {
    	   return age;
       }
       public void setHome(String newhome) {
    	   home=newhome;
       }
       public String getHome() {
    	   return home;
       }
       public Eighty() {
    	   
       }
       public Eighty(String newname,int newage,String newhome) {
    	   name=newname;
    	   age=newage;
    	   home=newhome;
       }
       public void tell() {
    	   System.out.println("我叫"+name+",我家是"+home+"人,我今年"+age+"岁了");
       }
}
public class Eightyb {
        public static void main(String[] args) {
			Eighty per=new Eighty("江南",20,"浙江温州");
			per.tell();
		}
}

执行结果
我叫江南,我家是浙江温州人,我今年20岁了

构造方法也可以进行重载,只需要考虑参数类型及个数即可,而方法名称一定要和类名称保持一致、。

class Eighty {
       private  String name;
       private int age;
       private String home;
       public void setName(String newname) {
    	   name=newname;
       }
       public String getName() {
    	   return name;
       }
       public void setAge(int newage) {
    	   age=newage;
       }
       public int getAge() {
    	   return age;
       }
       public void setHome(String newhome) {
    	   home=newhome;
       }
       public String getHome() {
    	   return home;
       }
       public Eighty() {
    	   
       }
       public Eighty(String newname) {
    	   name=newname;
//    	   age=newage;
//    	   home=newhome;
       }
       public void tell() {
    	   System.out.println("我叫"+name+",我家是"+home+"人,我今年"+age+"岁了");
       }
}
public class Eightyb {
        public static void main(String[] args) {
			Eighty per=new Eighty("江南");
			per.tell();
		}
}
执行结果
我叫江南,我家是null人,我今年0岁了

编写顺序:构造方法重载时,所有重载的方法按照参数的个数由多到少,或者由少到多排列。

构造方法可以在堆内存开辟的同时进行对象实例化处理,这样即便没有栈内存指向,该对象也可以使用一次,而对于这种没有指向的对象就称为匿名对象。
匿名对象的最大特点是使用一次就丢掉了。
范例:使用匿名对象进行操作

public class Eightyb {
        public static void main(String[] args) {
			new Eighty("江南",20,"浙江").tell();;
			
		}
}

执行结果
我叫江南,我家是浙江人,我今年20岁了

范例:使用构造方法接受引用数据类型

public class Eightytwo_a {
       private String info;
       public void setInfo(String info) {
    	   this.info=info;
       }
       public String getInfo() {
    	   return info;
       }
       public Eightytwo_a() {
    	   
       }
       public Eightytwo_a(String tempinfo) {
    	   info=tempinfo;
       }
}

public class Eightytwo_b {
       private String name;
       private int age;
       public void setName(String tempname) {
    	   name= tempname;
       }
       public String getName() {
    	   return name;
       }
       public void setAge(int tempage) {
    	   age=tempage;
       }
       public int getAge() {
    	   return age;
       }
      public void tell() {
    	  System.out.println("姓名"+name+",年龄"+age);
      }
      
       public Eightytwo_b() {
    	   
       }
       public Eightytwo_b(int tempage,Eightytwo_a msg) {
    	   
    	   age=tempage;
    	   name=msg.getInfo();
       }
       public Eightytwo_a getEightytwo_a() {
    	   return new Eightytwo_a("姓名"+name+",年龄"+age);
       }
}

public class Eightytwo_c {
        public static void main(String[] args) {
        	Eightytwo_a msg=new Eightytwo_a("藏三");
        	Eightytwo_b per=new Eightytwo_b(20,msg);
            per.tell();
        	msg=per.getEightytwo_a();
        	System.out.println(msg.getInfo());
		}
}
执行结果
姓名藏三,年龄20
姓名藏三,年龄20

构造方法接受一个类对象,为name赋值,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值