网站首页 > java教程 正文
面向对象有三个基本特征,分别是继承、封装和多态。继承之前讲过了,这次说一下封装,下一次说多态。封装,就是将要实现细节部分的内容,包装、隐藏起来,只暴露允许给外界调用的方法(接口)。它,可以让程式码更容易理解与维护,也加强了代码的安全性。
22.1 属性封装
将属性设置为私有(private)的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏,如果要提供给外部访问,就对属性提供对外的公共(public)方法访问,通常情况下,这些方法被称为getter和setter方法。
public class Student {
//隐藏信息
private String name;
private int age;
//提供对外的方法(接口)
public void setName(String name) {
//在这可以进行一些限制
this.name = name;
}
//提供对外的方法(接口)
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
外部想直接访问Student的属性是访问不了的,只能通过其对外提供的方法(接口)进行操作。
/*
* Java封装讲解
*/
public class Main {
public static void main(String[] args) {
Student student = new Student();
//只能通过方法设置属性
student.setName("王老虎");
student.setAge(16);
//只能通过方法访问属性
System.out.println(student.getName() + ",满"
+ student.getAge() + "岁了.");
}
}
输出结果
王老虎,满16岁了.
22.2 接口封装
将要实现的代码放在实现类中,统一对外提供访问接口,这其实是更常见的封装方法,只是说的人比较少,所以,你要赶紧关注老陈我啊。面向接口编程,才是真正的践行者。如果以后我有幸讲解Spring,而你有时间看的话,那你就会对封装理解更深刻的。
public interface AnnuaLeave {
//计算年假
double computeYear(int entryAge);
}
实现年假的类。如果某一天企业年假计算方法改变了,那你就直接改变实现类里的方法,其他地方保持不变。
//实现年假计算
public class AskForLeave implements AnnuaLeave {
public double computeYear(int entryAge) {
if (entryAge >= 1) {
return 5.0;
} else {
return 0.0;
}
}
}
调用年假计算接口,不管年假具体的实现类,封装,可以减少代码的耦合。
/*
* Java封装讲解
*/
public class Main {
public static void main(String[] args) {
AnnuaLeave annuaLeave = new AskForLeave();
double c = annuaLeave.computeYear(1);
System.out.println("工作忙1年,可以休" + c + "天年假。");
}
}
输出结果
工作忙1年,可以休5.0天年假。
好了,有关Java封装的内容就这么多了,如果你觉得老陈这样讲还可以的话,你就转发和点赞,你的轻轻一点,就是对老陈继续创作的最大鼓励和支持。
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我在分享Python,前端、Java和App方面的干货。关注我,没错的。
- 上一篇: java封装详解(java封装步骤)
- 下一篇: 5分钟课堂:Java封装(青骄第二课堂登录入口)
猜你喜欢
- 2024-11-13 Java面向对象三大特征:封装、继承、多态
- 2024-11-13 利用Java注解的简单封装,进行的一次优化
- 2024-11-13 如何封装原生的 Java NIO 以及扩展?详细到让你分分钟搞定Netty
- 2024-11-13 Java面向对象——基础2 封装、继承、多态
- 2024-11-13 想要 Spring Data JPA/MongoDB 更易用,你应该这样封装
- 2024-11-13 Java面向对象高级特性-封装(java面向对象三大特点)
- 2024-11-13 Java基础类型与封装类型的区别与联系
- 2024-11-13 java包装类的自动封装、自动拆箱和缓存
- 2024-11-13 java程序员必备的基础知识_java面向对象之封装(二)
- 2024-11-13 Java面试基础回顾03-封装(java基础面试题及答案)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)