Java 封装

Java 封装

一、概念

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

原则:
① 把所有的属性藏起来
② 把尽可能多的东西藏起来,对外提供便捷的接口

二、封装的实现

① 修改属性的可见性,设为private,防止错误修改。

public class Penguin {
    private String name; // 姓名
    private int health; // 健康值
    private int love; // 亲密度
}

② 创建公有的getter/setter方法(用于属性的读写)。

public class Penguin {
    private String name; // 姓名
    private int health; // 健康值
    private int love; // 亲密度
    
    // 创建getter/setter方法
    public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public int getHealth(){
		return health;
	}
	
	public void setHealth(int health){
		this.health=health;
	}
	
	public int getLove(){
		return love;
	}
	
	public void setLove(int love){
		this.love=love;
	}
}

③ 在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)。

public class Penguin {
    private String name;
    private int health;
    private int love;

    public Penguin() {
        super();
    }

    public Penguin(String name, int health, int love) {
        super();
        this.setName(name);
        this.health = health;
        this.love = love;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth(){
        return health;
    }

    public void setHealth(int health){
        if(health<0){
            System.out.println("你的宠物早就死了,重新复活,默认赋值60");
            this.health = 60;
            return; //return在方法中的作用有两个,一个是返回结果值,另一个作用是结束方法后续代码的执行
        }
        this.health=health;
    }

    public int getLove(){
        return love;
    }

    public void setLove(int love){
        if(love<0){
            System.out.println("多和你的宠物培养感情,默认提升亲密度到70");
            this.love=70;
            return;
        }
        this.love=love;
    }
}

封装的好处:

① 便于使用者正确使用系统,防止错误修改属性

② 有助于系统之间的松耦合,提高系统独立性

③ 提高软件的可重用性

④ 降低了构建大型系统的风险

三、package包

1. 作用

① 允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件。

② 防止命名冲突区分名字相同的类。

③ 有助于实施访问权限控制。

2. 创建包

作为Java源代码第一条语句,用package声明包,以分号结尾。

package cn.jbit.inherit;  //声明包
public class School{
    ……
}

3. 包命名规范

① 包名由小写字母组成,不能以圆点开头或结尾。

package mypackage;

② 包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。

package net.javagroup.mypackage;

③ 包名后续部分依不同机构内部的规范不同而不同。

package net.javagroup.research.powerproject;

4. 导包

import   包名.类名;
  1. 系统包:java.util
import java.util.*;      //导入java.util包中所有类
  1. 自定义包:cn.jtest.classandobject
import cn.jtest.classandobject.School;    //导入指定包中指定类

*: 指包中的所有类

School :指包中的School类

注意事项

  1. 一个类同时引用了两个来自不同包的同名类,必须通过完整类名来区分。
public class Demo01 {
	/*
	 * 1)同一个包中不能有同名的类文件
	 * 2)同一个类文件中可以声明多个类,但是一个类文件中只能有一个public修饰的类,并且这个类名要和文件名保持一致
	 * 3)一般在一个类文件中只写一个类
	 * 
	 * 
	 */
	Scanner input = new Scanner(System.in);
	//导入java.util.Date
	java.util.Date date = new java.util.Date();
	double num =Math.random();
	
	//导入java.sql.Date()
	java.sql.Date date2 = new java.sql.Date(123456789L);

}
  1. 每个包都是独立的,顶层包不会包含子包的类。

2aa1808fc134ca21

  1. package和import的顺序是固定的。

​ ① package必须位于第一行(忽略注释行)

​ ② 只允许有一个package语句

​ ③ 其次是import

​ ④接着是类的声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Glensea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值