Java学习笔记(一) 面向对象---封装
2020-01-30 16:02:48来源:博客园 阅读 ()
Java学习笔记(一) 面向对象---封装
面向对象---封装
封装是面向对象思想的三大特征之一。
理解: 隐藏对象的属性和实现细节,仅对外提供公共访问方式。
优点:
- 将变化隔离
- 便于使用
- 提升代码复用性
- 提高安全性
封装原则:
- 将不需要对外提供的内容都隐藏(比如通过修饰符private隐藏)起来
- 把属性都隐藏,提供公共方法对其访问
权限修饰符:
- 意义:在Java中可以使用访问控制符来保护对类、变量、方法和构造方法的访问。
- 可以通过下表来说明访问权限:
修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N(需具体说明) | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
- 对于私有的属性,提供公共方法对其访问。
例如:
class Student {
private int age;
private String name;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class StudentDemo {
public static void main(String[] args) {
Student s = new Student();
s.setAge(19);
s.setName("lyx");
System.out.println(s.getAge());
System.out.println(s.getName());
}
}
运行结果为:19
lyx
在以上的代码中我们对Student类中的age和name变量进行私有(即将age和name封装在Student类中),在类的外部无法直接对它们进行访问(修改和读取)。但我们在Student类中分别定义公共方法set和get,我们就可以实现对它们的访问了。
私有只是封装的一种表示形式。
之所以对外提供公共方法对其访问,是因为可以在访问方式中加入逻辑判断语句。
对访问的数据进行操作,提高代码的健壮性。
在上述的例子中,我们通过setAge方法对age进行修改,但是age的值需要设定为一个合理的数值,如果对age的值不加检查地就设定可能会导致一些错误。比如age的合理值为[0,100],我们就可以将setAge这个方法的代码改为以下:
public void setAge(int age) {
if(0<=age && age<=100)
this.age = age;
else
System.out.println("age非法");
}
在进行如上修改之后,如果age的值不合法,就会有所提示。
参考资料:https://www.runoob.com/java/java-modifier-types.html#protected-desc
原文链接:https://www.cnblogs.com/liyuxin2/p/12244319.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash