栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

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;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692608.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号