Java封装和构造方法

数据封装


保护数据的一种方法,将对象的属性和方法隐藏起来。

私有属性

使用 private 代替 public 使属性变为私有属性

private int age;
private String name;

私有属性在其它类里面不能访问,可以通过 get/set 方法给私有属性赋值

private int age;
public void setAge(){
	//设置属性代码;
}
public int getAge(){
	//获取属性代码;
}

方法封装


用于隐藏一个方法

public class Demo{
	private void method1(){
		//私有方法代码;
	}
	public void method2(){
		//公开方法代码;
	}
}

应用场景

正常情况下,所有属性都应该设置为私有,除非确保外部不能访问

构造方法


创建对象的时候都会自带一个方法,叫做构造方法,如:

Student s = new Student();
Person p = new Person();

该构造方法没有返回类型,与类名相同,在new对象的时候会被自动调用,并且每个对象的构造方法最多只会被调用一次。

空构造方法

也叫默认构造方法

  • 默认构造方法没有任何参数
  • 默认构造方法不会执行任何具体操作
  • 一旦手动设置构造函数后,那么这个默认构造函数将不再存在

如果想用构造方法初始化一些属性,调用一些方法,可以手动定义一个空构造函数,用来覆盖这个默认构造函数

public class Student(){
	// 构造方法
	public Student(){
		System.out.println("...")	
	}
}
// 使用构造方法
Student s = new Student();

构造方法名与类名必须保持一直,并且没有返回类型

构造方法参数

因为对象创建时只会调用构造方法一次,可以在构造方法中对对象的属性进行初始化操作

public class Studnet{
	private String name;
	//带参构造方法
	public Student(String name){
		this.name = name;
	}
	//写方法
	public void setName(String name){
		this.name = name;
	}
	//读方法
	public String getName(){
		return this.name;
	}
}

上述构造方法中,实例化对象时需要传递一个参数给构造方法;

Student s = new Student("学生1")

也可以使用多个参数,如:

public class 类名{
	// 带参构造方法
	public 类名(参数类型1 参数名1, 参数类型2 参数名2 ...)
}
// 创建对象
类名 对象名 = new 类名((参数类型1 参数名1, 参数类型2 参数名2 ...)

多个构造方法

有时候我们可以想使用多种方式来构造一个对象,比如只初始化一部分属性,另一部分使用默认值,这种需求可以通过定义多个构造函数实现:

public class Player{
    private String name;
    private int age;
    // 第一个构造函数
    public Player(){
        name = "无名氏";
        age = 18;
    }
    // 第二个构造函数
    public Player(String name){
        this.name = name;
        age = 18;
    }
    // 第三个构造函数
    public Player(String name, int age){
        this.name = name;
        this.age = age;
    }
}// 使用构造函数
Player p1 = new Player(); // 使用的是第一个构造函数
Player p1 = new Player("玩家1"); // 使用的是第二个构造函数
Player p1 = new Player("玩家1", 18); // 使用的是第三个构造函数

多个构造函数的价值和特点:

  • 多种初始化手段,提供给使用者
  • 类似方法的重载
  • 可以使用 this() 优化

this关键字

this关键字可以指明使用的是当前类的属性或方法,可用于区分属性和方法传递的参数

public class Teacher(){
	private int age;
	public void setAge(int age){
		this.age = age; //this.age为属性, age为参数
	}
}

this构造方法

一个类可以有多个构造方法,这些构造方法之间的代码一般能够复用,这就需要使用 this() 构造方法调用了。

public class Player{
    private String name;
    private int age;
    // 第一个构造函数
    public Player(){
        this("无名氏");
        System.out.print("->1 ");
    }
    // 第二个构造函数
    public Player(String name){
        this(name, 18);
        System.out.print("->2 ");
    }
    // 第三个构造函数
    public Player(String name, int age){
        this.name = name;
        this.age = age;
        System.out.print("->3 ");
    }
}// 调用
new Player(); // ->3 ->2 ->1
new Player("s"); // ->3 ->2
new Player("b", 38); // ->3

主要作用是可以通过 this(参数) 将多个构造串联起来,该形式并不是必须的,主要是为了简化代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩尼诗道-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值