JAVA基础(46)---构造方法和匿名方法

构造方法

构造方法的特点

  1. 构造方法没有返回值,连void也不写
  2. 构造方法的方法名必须和类名完全一致;
  3. 当我们没有去显式的声明构造方法的时候,Java默认会为每一个类,提供一个无参的构造方法。一旦我们提供了任何一个构造方法,那么Java就不在提供默认的无参构造方法。

基于第三个特点,我们一般在写一个类的时候,如果要写构造方法,自己最好将这个无参的构造方法也手动的写出来。  
                                                             访问修饰符 类名称(【形参列表】){
        
                                                               }

构造方法的作用

  1. 创建对象
  2. 完成对象的初始化

构造方法在何时使用

                                  创建对象时有jvm自动去调用

构造方法的重载

                              是在程序运行阶段,有Jvm去判断调用哪一个重载的方法。
                               【
                                    编译阶段:检查是否存在语法错误,并将 .java 文件,编译成 .class文件,生成字节码文件
                                    运行阶段:才会将生成的 .class 文件加载进内存中,才会去真正的执行我们的程序传递参数,匹配要执行的方法。            
                                】

对对象的初始化

  1. 在对象创建好之后,进行初始化;
  2. 在创建对象的时候,利用构造方法完成对象的初始化
  3. 可以利用代码块来完成对象的初始化。

代码块

         随着创建对象而执行构造代码块

        无论你执行的是有参构造还是无参构造,构造代码块都会执行,而且先于构造方法执行
        如果使用的是无参构造,那么对象的属性值就是构造代码块中所赋的值
        如果使用的是有参构造,那么有参构造中传入的属性值,会覆盖掉构造代码块中的对应的属性的值

                                                   例如:{

                                                                    this.name = "张三";

                                                                       this.age = 20

                                                               }  //这就是一个代码块

匿名对象

一个对象在创建的时候没有名称。匿名对象只能使用一次

例:new String("abc")

public class Person{
	public Person(){//这就是一个构造方法
		System.out.println("创建了一个person对象");
	}
	public Person(String name){
		this.name = name;
	}
	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}
	{
		this.name="赵六";
		this.age = 22;
	
	}
	//属性
	private String name;
	private int age;
	//方法
	public void setName(String name){
		this.name = name;
		System.out.println(name);
	}
	public String getName(){
		return this.name;
	
	}
	public void setAge(int age){
		this.age = age;
	}
	public int getAge(){
		return this.age;
	}
	public static void main(String[] args){
			Person p = new Person();
			p.setName("张三");
			System.out.println(p.getName());
			Person p1 = new Person();
			p1.setName("张三");
			System.out.println(p1.getName());
			Person p2 = new Person("李四");
			System.out.println(p2.getName());
			Person p3 = new Person("王五",22);
			System.out.println(p3.getName() +"---"+p3.getAge());
			Person p4 = new Person();
			System.out.println(p4.getName() +"---"+p4.getAge());
			System.out.println(new String("abcd").length());
	
	}
}

使用this调用本类的构造方法的时候,必须出现在方法的第一行

 

 

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值