Java学习(九)之构造方法

1.属性 ---- 静态描述类的特征(变量,存值)
2.方法 ---- 动态描述类的行为(做事情)
3.构造方法 ---- 用来创建当前类的对象(是一个特殊的方法)
4.程序块(代码块) — 一个无修饰符无参数无返回值的方法

构造方法

  1. 作用:为构建(构造)当前类的对象
  2. 写法:
权限修饰符 [返回值类型(当前类)] 与类名一致的方法名(参数列表) [异常]{
	一件事情 创建一个对象(当前类Demo)
	返回对象;
}
  1. 通过new关键字调用
public class Demo{
	public Demo() {
		System.out.print("我是Demo的构造方法");
	}
}
public class Main {
	public static void main(String[] args){
		Demo demo = new Demo();
	}
}
/*输出
我是Demo的构造方法
*/
  1. 构造方法的特点
    1 每一个类都有构造方法,若自己在类中没有定义,系统会默认提供一个无参数的构造方法,如果在类中自己定义了构造方法,则默认无参数的构造方法就被覆盖。
    2 构造方法是否存在重载???
    存在构造方法重载
public class Demo{
	public Demo() {
		System.out.println("我是Demo的构造方法");
	}
	public Demo(String s) {
		System.out.println("我是带String参数的Demo类的构造方法"+s);
	}
}
public class Main {
	public static void main(String[] args){
		//Demo demo = new Demo();
		Demo d2 = new Demo("123");
	}
}
/*输出
我是带String参数的Demo类的构造方法123
*/
  1. 每一个类都有构造方法,我们为什么要定义构造方法,什么时候需要设计构造方法?
    在创建对象的同时,我们想要一并做一些事情,默认提供的构造方法是不会做的,这个时候可以自己定义构造方法(无参数的构造方法内做事,也可以定义带参数的)
public class Demo{
	public String name; 
	public int age;
	public String sex;
	// 最好将系统自带的无参数默认构造方法也一起写上
	public Demo(){}
	public Demo(String name, int age, String sex) {
		this.name = name; 
		this.age = age;
		this.sex = sex;
	}
	
}

public class Main {
	public static void main(String[] args){
		//Demo demo = new Demo();
		Demo demo = new Demo("小明",18,"男");
		System.out.println("我是"+demo.name+"年龄是"+demo.age+"性别是"+demo.sex);
	}
}
/*输出
我是小明年龄是18性别是男
*/

======================================================================================
构造方法中属性与变量重名,必须需要一个代替词代替对象
this关键字的使用

  1. 是一个关键字(指代词),代替的是某一个对象(是当前调用属性或方法时的那个对象)
  2. this既然代替的是一个对象
     this可以调用什么? 属性 方法
     this可以调用构造方法嘛?
      构造方法在一般方法之前执行,在一般的方法内不可以调用构造方法。
      可以在一个构造方法中通过this();调用另一个构造方法,省略构造方法的名字(必须与类名一致)
      必须在另一个构造方法内使用,必须在程序的第一行
public class Demo{
	public String name; 
	public int age;
	public String sex;
	
	public Demo(){
		System.out.println("我是默认构造函数");
	}
	
	public Demo(String name, int age, String sex) {
		this(); //调用另一个构造方法
		this.name = name; 
		this.age = age;
		this.sex = sex;
	}
	
}
public class Main {
	public static void main(String[] args){
		//Demo demo = new Demo();
		Demo demo = new Demo("小明",18,"男");
		System.out.println("我是"+demo.name+"年龄是"+demo.age+"性别是"+demo.sex);
	}
}
/*输出
我是默认构造函数
我是小明年龄是18性别是男
*/
  1. this调用的过程可以放置在哪个位置写?
    可以在类的任意成员位置

程序块(代码块)

  1. 作用:跟普通方法一样,用来执行一些事情
  2. 写法:可以认为程序块是一个 没有修饰符,没有参数,没有返回值没有名字的特殊方法
{
}
  1. 用法:块也需要调用才能执行,我们自己调用不到(因为块没有名字)
    每一次调用构造函数之前,系统会帮我们自动调用一次程序块,让他执行一遍
  2. 特点:没有什么重载的概念(因为压根连名字都没有参数都没有),但是可以在类中定义多个程序块
  3. 块可以在里面写一些程序,在想要创建对象之前执行
  4. 可以限制某些类属性或者对象的生命周期
public class Demo{
	public String name; 
	public int age;
	public String sex;
	
	{
		System.out.println("我是一个代码块");
	}
	public Demo(){}
	
	public Demo(String name, int age, String sex) {
		this.name = name; 
		this.age = age;
		this.sex = sex;
	}	
}
public class Main {
	public static void main(String[] args){
		//Demo demo = new Demo();
		Demo demo = new Demo("小明",18,"男");
		System.out.println("我是"+demo.name+"年龄是"+demo.age+"性别是"+demo.sex);
	}
}
/*输出
我是一个代码块
我是小明年龄是18性别是男
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值