Java-面向对象-封装、接口
·
封装介绍
封装(Encapsulation)是面向对象编程(OOP)的三大特性之一(另外两个是继承和多态)。它就像给你的代码穿上了一件"智能外套",既能保护内部数据,又能提供简洁的交互方式。
想象你有一个存钱罐:
- 不封装:罐子完全敞开,任何人都可以随意拿取或放入钱币
- 封装后:罐子有一个投币口(方法)和显示窗口(方法),但钱币不能被直接触碰
这就是封装的核心思想:隐藏对象的内部细节,仅暴露必要的操作接口。
封装的优点
- 良好的封装能够减少耦合。
- 类内部的结构可以自由修改。(内部变更不影响外部)
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
实现封装的步骤
- 修改属性的可见性来限制对属性的访问(一般限制为private)
代码语言:javascript
AI代码解释
public class BankAccount {
private double balance; // 私有变量,外部无法直接访问
// 公共方法作为访问接口
public double getBalance() {
return balance;
}
public void deposit(double amount) {
if(amount > 0) {
balance += amount;
}
}
}
将类中的balance变量设置成了私有,外部无妨访问,从而实现了对信息的隐藏。
- 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
代码语言:javascript
AI代码解释
public void setBalance(double amount) {
if(amount >= 0) { // 添加验证逻辑
this.balance = amount;
}
}
通过setter方法,getter方法来实现对私有变量的访问。
代码语言:javascript
AI代码解释
/* 文件名: EncapTest.java */
public class EncapTest{
private String name;
private String idNum;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getIdNum(){
return idNum;
}
public void setAge( int newAge){
age = newAge;
}
public void setName(String newName){
name = newName;
}
public void setIdNum( String newId){
idNum = newId;
}
}
所以要访问任何私有变量的类都要通过这些setter、getter方法:
代码语言:javascript
AI代码解释
/* F文件名 : RunEncap.java */
public class RunEncap{
public static void main(String args[]){
EncapTest encap = new EncapTest();
encap.setName("James");
encap.setAge(20);
encap.setIdNum("12343ms");
System.out.print("Name : " + encap.getName()+
" Age : "+ encap.getAge());
}
}
接口介绍
- 接口(Interface)是Java编程语言中一个非常重要的概念,它是抽象方法的集合,用于定义行为规范。
- 接口是一种完全抽象的类,它只包含抽象方法和常量(在Java 8之前)。接口定义了一组方法签名(没有实现),任何实现该接口的类都必须提供这些方法的具体实现。
更多推荐




所有评论(0)