Surpass Day6——Java面向对象的封装、构造方法

本文详细介绍了面向对象编程中的封装概念,包括封装的好处、如何通过set和get方法实现属性的封装,以及构造方法的定义、语法、调用规则和作用。同时涵盖了自动构造方法的使用实例。通过Bank类展示封装与构造方法的结合应用。
摘要由CSDN通过智能技术生成

目录

1、面向对象的封装

1.1 封装的好处

1.2 如何封装

1.3 封装后如何访问

2、构造方法

2.1 定义

2.2 构造方法的语法结构

2.3 构造方法的调用

2.4 有无static方法的调用

2.5 构造方法的作用

2.6 自动构造方法的快捷方式

2.7 面向对象的封装以及构造方法的实例


1、面向对象的封装

1.1 封装的好处

1)封装之后对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面,复杂性封装,对外提供简单的操作入口;

2)封装之后才会形成真正的"对象",真正的"独立体";

3)封装之后意味着以后的程序可以重复使用,并且这个事物适应性比较强,在任何场所都能够使用;

4)封装之后,对于事物本身提高了安全性;

1.2 如何封装

1.2.1 属性私有化

使用private关键字进行修饰,修饰的所有数据只能在本类中访问;

1.2.2 对外提供简单的操作入口(两个公开的方法)

-调用set方法:修改属性;

-调用get方法:读取属性;

1.2.3 set方法的命名规范

public void setAge(int a){
    //编写业务逻辑代码进行安全控制 if()
    age = a;
}

由于java有就近原则,以下代码Error

public void setAge(int age){
    age = age;
}//这里并没有给age属性赋值,这里的age都是局部变量age

1.2.4 get方法的命名规范

public int getAge(){
    //编写业务逻辑代码进行安全控制 if()
    return age;
}

而在eclipse中get和set方法不用写,直接按下面操作自动生成get,set方法

单击右键--->Source--->Generate Getters and Setters

 

1.3 封装后如何访问

调用方法:

修改:user.setAge(-100);

读取:user.getAge();

注意:不能通过"类型.变量名"访问,已经封装在类中,外部无法访问,只能通过方法;


2、构造方法

2.1 定义

构造方法又被称为构造函数/构造器/Constructor

2.2 构造方法的语法结构

[修饰符列表]  构造方法名 (形式参数列表){
​
    构造方法体;  
​
}

与普通方法的语法结构对比:

[修饰符列表] 返回值类型 方法名(形式参数列表){
​
        方法体;
​
}

注意:

1)"返回值类型"不需要指定,也不用写void;

写上void就变成了普通方法了;

2)构造方法名必须与类名相同;

2.3 构造方法的调用

1)普通方法的调用:

方法修饰符有static时:类名.方法名(实参列表)

方法修饰符没有static时:引用.方法名(实参列表)

2)构造方法的调用: new 构造方法名(实参列表)

3)构造方法执行之后有返回值,且返回值类型为构造方法所在类的类型(他本身),所以语法结构中不用写返回值类型,构造方法执行之后java程序自动返回值;

4)当一个类中没用定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器

5)当一个类显示的将构造方法定义出来了,那么系统不再默认提供的缺省构造器了,建议开发中手动的为当前类提供无参数的构造方法;

6)构造方法支持重载机制,在一个类中编写多个构造方法,这多个构造方法显然已经构成方法重载机制;

public class Code{
    public static void main(String[] args){
        User u1 = new User("Jack");
        User u2 = new User(10);
    }
}
​
public User(int i){
    System.out.println("带有int参数类型的构造器")
}
public User(String name){
    System.out.println("带有String参数类型的构造器")
}

2.4 有无static方法的调用

方法有static修饰时,调用方法时不需要new对象,直接通过方法名(实参)/类名.方法名(实参)调用;

public class Code{
    public static void main(String[] args){
        Code.dosome();
        dosome;
    }
}
public ststic void dosome(){
    System.out.println("do some");
}

方法没有static修饰时,调用方法时需要new对象;

public class Code{
    public static void main(String[] args){
        Code t = new Code();
        t.dosome;
    }
}
​
public void dosome(){
    System.out.println("do some");
}

2.5 构造方法的作用

1)创建对象;

2)初始化实例变量的内存空间,赋值;

注意: 实例变量的系统默认赋值不是在类加载的时候完成赋值的,类加载的时候只将代码片段加载到了方法区内存,而实例变量的初始化是在创建对象之后(构造方法完成之后)完成初始化的

2.6 自动构造方法的快捷方式

单击右键--->Source--->Generate Constructor using Fields... 

2.7 面向对象的封装以及构造方法的实例

public class helloworld{
	public static void main(String[] args){
		Bank b = new Bank("Jack",1000);
		System.out.println("账号名字为" + b.getName());
		System.out.println("账号余额为" + b.getMoney());
        Bank a = new Bank();
        System.out.println("账号名字为" + a.getName());
		System.out.println("账号余额为" + a.getMoney());
    }
}
class Bank{
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	private String name;
	private int money;
    //无参数的构造器
    public Bank(){
	}
    //有参数的构造器
	public Bank (String s,int d) {
		name = s;
		money = d;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胖虎不秃头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值