首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第一章:面向对象思想概述
第二章:类和对象
第三章:类的定义
第四章:对象的创建和使用
第五章:关键字 package 和 import
第六章:类的成员之一:属性
第七章:类的成员之二:方法
第八章:可变参数
第九章:方法重载( overload )
第十章:方法的值传递机制
第十一章:递归
第十二章:对象数组
第十三章:OOP特征之一:封装
第十四章:类的成员之三:构造器
第十五章:JavaBean
第十六章:关键字 this
当前位置:
首页>>
技术小册>>
Java语言基础5-面向对象初级
小册名称:Java语言基础5-面向对象初级
13.1 概述 - 程序设计追求 高内聚、低耦合 : - 高内聚:类的内部数据操作细节自己完成,不允许外部干涉。 - 低耦合:仅对外暴露少量的方法用于使用。 - 封装:隐藏对象内部的复杂性,只对外部公开简单的接口,便于外界调用,从而提高系统的可扩展性、可维护性。换言之,将该隐藏的隐藏起来,该暴露的暴露出来 。 13.2 为什么要进行封装? - 使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。 - 示例: ```bash package com.encapsulation.demo1; /** * 动物 * * @author maxiaoke.com * @version 1.0 */ public class Animal { /** * 腿 */ public int legs; /** * 吃饭的方法 */ public void eat() { System.out.println("吃饭"); } /** * 移动的方法 */ public void move() { System.out.println("移动"); } } ``` ```bash package com.encapsulation.demo1; /** * @author maxiaoke.com * @version 1.0 */ public class AnimalTest { public static void main(String[] args) { Animal animal = new Animal(); // 如果这边赋值的是-100?,不合法啊 // 应该将legs属性保护起来,防止乱用 animal.legs = 4; System.out.println(animal.legs); // 4 animal.eat(); animal.move(); } } ``` 13.3 Java中的封装 - Java 中通过将数据声明为私有的( private ),再提供公共的( public )方法:setXxx() 和 getXxx() 来实现对该属性的操作,以实现以下的目的: - ① 隐藏一个类中不需要对外提供的实现细节。 - ② 使用者只能通过事先定制好的 方法来访问数据 ,可以方便的加入控制逻辑,限制对属性的不合理操作。 - ③ 便于修改,增强代码的维护性。 - 示例: ```bash package com.encapsulation.demo2; /** * 动物 * * @author maxiaoke.com * @version 1.0 */ public class Animal { /** * 腿 将属性进行私有化 */ private int legs; public int getLegs() { return this.legs; } public void setLegs(int legs) { if (legs != 0 && legs != 2 && legs != 3) { System.out.println("动物的腿一般为0、2、4"); return; } this.legs = legs; } /** * 吃饭的方法 */ public void eat() { System.out.println("吃饭"); } /** * 移动的方法 */ public void move() { System.out.println("移动"); } } ``` ```bash package com.encapsulation.demo2; /** * @author maxiaoke.com * @version 1.0 */ public class AnimalTest { public static void main(String[] args) { Animal animal = new Animal(); // 非法 动物的腿一般为0、2、4 animal.setLegs(-100); System.out.println(animal.getLegs()); animal.eat(); animal.move(); } } ``` 13.4 四种访问权限修饰符 - Java 权限修饰符 public、protected 、缺省 、private 置于 类的成员 定义前,用来限定对象对该类成员的访问权限。 ![](/uploads/images/20230724/7386707ca2792934f30fa2f1ad8a2d6d.png) - 对于 class 的权限修饰符只可以用 public 和 缺省 : - public 类可以在任意地方被访问。 - 缺省类 只可以被同一个包内部的类访问。 13.5 练习 - 创建程序,在其中定义两个类:Person 和 PersonTest 。定义如下:用 setAge() 设置人的合法年龄( 0~130 ),用 getAge() 返回人的年龄。用PersonTest 类中实例化 Person 类的对象 b ,调用 setAge() 和 getAge() 方法,体会 Java 的封装性。 - 示例: ```bash package com.encapsulation.demo3; /** * @author maxiaoke.com * @version 1.0 */ public class Person { /** * 年龄 */ private int age; /** * 获取年龄 * * @return int */ public int getAge() { return this.age; } /** * 设定年龄 * * @param age * 年龄 */ public void setAge(int age) { if (age < 0 || age > 130) { System.out.println("输入不合法"); return; } this.age = age; } @Override public String toString() { return "Person{" + "age=" + this.age + '}'; } } ``` ```bash package com.encapsulation.demo3; /** * @author maxiaoke.com * @version 1.0 */ public class PersonTest { public static void main(String[] args) { Person person = new Person(); person.setAge(50); System.out.println(person.getAge()); System.out.println(person); } } ```
上一篇:
第十二章:对象数组
下一篇:
第十四章:类的成员之三:构造器
该分类下的相关小册推荐:
Spring Cloud微服务项目实战
Mybatis合辑5-注解、扩展、SQL构建
Java必知必会-Maven高级
SpringBoot零基础到实战
Java语言基础1-基础知识
深入拆解 Java 虚拟机
Java语言基础14-枚举和注解
Java语言基础15-单元测试和日志技术
Mybatis合辑4-Mybatis缓存机制
Java语言基础13-类的加载和反射
Java语言基础6-面向对象高级
Java并发编程实战