博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java封装
阅读量:6714 次
发布时间:2019-06-25

本文共 2792 字,大约阅读时间需要 9 分钟。

Java封装

1.什么是封装

封装可以认为是一个保护屏障,防止代码和数据被外部类定义的代码随机访问。封装最主要的功能在于我们可以修改自己的实现代码,而不用修改那些调用我们代码的程序片段。封装加强了代码的安全性。

2.封装的优点

1.良好的封装能够减少耦合性

2.类内部的结构可以自由修改
3.隐藏信息,增强安全性

3.实现封装的步骤

  1. 修改属性的可见性来限制对属性的访问private
public class Person {    private String name;    private int age;}复制代码

2.对每个值属性提供对外的公共方法访问,使用get,set方法

public class Person{    private String name;    private int age;​    public int getAge(){      return age;    }​    public String getName(){      return name;    }​    public void setAge(int age){      this.age = age;    }​    public void setName(String name){      this.name = name;    }}复制代码

代码实例

public class Dog {	// 静态变量	private String name;	private int health;// 健康值	private int love;	private String strain;// 宠物的品种	public void show() {		System.out.println("我叫" + name + ",现在健康值是:" + health + ",亲密度是:" + love + ",品种是:" + strain);	}	public Dog() {	}	public Dog(int health, int love, String strain) {		this.health = health;		this.love = love;		this.strain = strain;	}	// 不能够轻易的可以通过对象名.属性名来修改数据 只提供一个方法给他 具体参数合法性判断由我们自己来决定	public void setHealth(int health) {		if (health < 0 || health > 100) {			System.out.println("健康值是0-100,默认值是60");			this.health = 60;			return;		}		this.health = health;	}	public int getHealth() {		return this.health;	}	public void setName(String name) {		this.name = name;	}	public String getName() {		return this.name;	}}复制代码
public class Demo02 {	public static void main(String[] args) {		// TODO Auto-generated method stub		Dog dog = new Dog();		// 封装属性 外部观察不到 只能看到相对应的方法 并且可以在方法里面实现控制		dog.setHealth(1001);		dog.setName("哈哈");		System.out.println(dog.getName());		System.out.println(dog.getHealth());		// 没有封装属性 可以随意的查看对象的属性		Dog2 dog2 = new Dog2();		dog2.health = -100;		dog2.show();	}}复制代码
public class Demo01 {	public static void main(String[] args) {		// TODO Auto-generated method stub		// 人有姓名 年龄 身高 体重 使用封装思想来创建类		Person person = new Person();		person.setName("张三");		person.setAge(18);		person.setHeight(175);		person.setWeight(130);		System.out.println(person.toString());	}}class Person {	private String name;	private int age;	private int height;	private int weight;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	public int getHeight() {		return height;	}	public void setHeight(int height) {		if (height < 0) {			this.height = 0;			return;		}		this.height = height;	}	@Override	public String toString() {		return "Person [name=" + name + ", age=" + age + ", height=" + height + ", weight=" + weight + "]";	}	public int getWeight() {		return weight;	}	public void setWeight(int weight) {		if (weight < 0) {			this.weight = 0;			return;		}		this.weight = weight;	}}复制代码

转载于:https://juejin.im/post/5c33498ee51d45527201665b

你可能感兴趣的文章
Beta阶段对团队成员公开感谢
查看>>
2016年终总结
查看>>
KindEditor
查看>>
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".错误的解决方法
查看>>
图像处理之基础---卷积,滤波,平滑
查看>>
laravel框架——保存用户登陆信息(session)
查看>>
mapreduce 读写Parquet格式数据 Demo
查看>>
大白话系列之C#委托与事件讲解大结局
查看>>
云岸数字
查看>>
POJ 1222 EXTENDED LIGHTS OUT (熄灯问题)
查看>>
CSS知识点整理(1):CSS语法,层叠次序,选择器,其他重要方面。
查看>>
IIS部署错误解决集合
查看>>
什么是大数据时代的思维?
查看>>
20162329 实验五:数据结构综合应用
查看>>
刀剑如梦
查看>>
asp.net <%%> <%#%><%=%><%@%><%$%>用法与区别
查看>>
数据结构_1 排序
查看>>
WinEdt选项卡配置
查看>>
机器学习---文本特征提取之词袋模型(Machine Learning Text Feature Extraction Bag of Words)...
查看>>
oracle入门必备
查看>>