16-面向对象编程-封装
面向对象编程有三大特征:封装、继承和多态
访问修饰符可以控制属性的访问范围
public:表示公共访问级别,可以被任何类访问。
protected:表示受保护访问级别,可以被类本身、子类和同一包中的类访问。
default(缺省):表示默认访问级别,即如果没有使用访问修饰符,默认是此级别,可以被同一包中的类访问。
private:表示私有访问级别,只能在类内部访问。
修饰符
|
类
|
包
|
子类
|
其他包
|
---|---|---|---|---|
public
|
√
|
√
|
√
|
√
|
protected
|
√
|
√
|
√
|
×
|
default
|
√
|
√
|
×
|
×
|
private
|
√
|
×
|
×
|
×
|
封装介绍
封装 (encapsulation) 就是把抽象出的数据 [属性] 和对数据的操作 [方法] 封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作 [方法] ,才能对数据进行操作。
换句话说,方法封装是将一些有共性的或多次被使用的代码提取到一个方法中,供其他地方调用。
封装的好处
避免代码冗余容易维护,隐藏代码实现的细节。
封装的实现步骤
1) 将属性进行私有化【不能直接修改属性】
2) 提供一个公共的 set()方法,用于对属性判断并赋值
3) 提供一个公共的 get()方法,用于获取属性的值
//封装案例,要求不能随便查看人的年龄隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则默认 //年龄必须在1-120,年龄不能直接查看 public class Encapsulation01 { public static void main(String[] args) { Person p = new Person(); p.name = "马铃薯"; p.setAge(26); System.out.println("姓名:" + p.name + "\t年龄:" + p.getAge()); } } class Person{ //名字是公共的 public String name; //年龄是私有的,private修饰符表示只能在当前类内访问 private int age; //创建get()方法,用于对属性判断并赋值 public int getAge() { return age; } //创建set()方法,用于获取属性的值 public void setAge(int age) { if(age >= 1 && age <= 120){ this.age = age; }else{ System.out.println("年龄设置不合理,需要在 1-120 之间!"); this.age = 0; } } }
构造器 与 set()方法相结合
构造器主要是完成对新对象的初始化,而 get() 和 set()方法则是完成对属性的获取和赋值。
public class Encapsulation02 { public static void main(String[] args) { Person2 p2 = new Person2("马铃薯", 26); System.out.println("姓名:" + p2.name + "\t年龄:" + p2.getAge()); //姓名:马铃薯 年龄:26 p2.name = "任先生"; p2.setAge(18); System.out.println("姓名:" + p2.name + "\t年龄:" + p2.getAge()); //姓名:任先生 年龄:18 } } class Person2{ public String name; private int age; //构造方法 public Person2(String name, int age) { this.name = name; this.age = age; } //get() 和 set()方法 public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix