封装

概念:将某些东西进行隐藏,然后提供相应的方式进行获取。
封装是把过程和数据包围起来,对数据的访问只能通过自己定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在Java中通过关键字private、protected、public实现封装。什么是封装?封装是把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方式将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。适当的封装可以让代码更容易理解和维护,也加强了代码的安全性。

程序设计追求“高内聚,低耦合”。
➢高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
➢低耦合:仅对外暴露少量的方法用于使用。
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。
通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。
封装的好处是:提高代码的安全性。

  1. public class Girl {
  2. //属性:
  3. private int age;
  4. //读取年龄:
  5. public int duquAge(){
  6. return age;
  7. }
  8. //设置年龄:
  9. public void shezhiAge(int age){
  10. if(age >= 30 ){
  11. this.age = 18;
  12. }else{
  13. this.age = age;
  14. }
  15. }
  1. public class Test {
  2. //这是一个main方法,是程序的入口:
  3. public static void main(String[] args) {
  4. //创建一个Girl类的对象:
  5. Girl g = new Girl();
  6. /*g.age = 33;
  7. System.out.println(g.age);*/
  8. //设置年龄:
  9. g.shezhiAge(31);
  10. //读取年龄:
  11. System.out.println(g.duquAge());
  12. }
  13. }

上面的代码,对于属性age来说,我加了修饰符private,这样外界对它的访问就受到了限制,现在我还想加上其他的限制条件,但是在属性本身上没有办法再加了,所以我们通过定义方法来进行限制条件的添加。
以属性为案例进行封装:

  1. 将属性私有化,被private修饰—》加入权限修饰符(一旦加入了权限修饰符,其他人就不可以随意的获取这个属性)
  2. 提供public修饰的方法让别人来访问/使用
  3. 即使外界可以通过方法来访问属性了,但是也不能随意访问,因为咱们在方法中可以加入 限制条件

    继承

    继承关键字是extends

  4. 类是对对象的抽象

举例:
荣耀20 ,小米 红米3,华为 p40 pro —-> 类:手机类

  1. 继承是对类的抽象
    举例:

学生类:Student:
属性:姓名,年龄,身高,学生编号
方法:吃饭,睡觉,喊叫,学习

举例:
学生类:Student:
属性:姓名,年龄,身高,学生编号
方法:吃饭,睡觉,喊叫,学习

教师类:Teacher:
属性:姓名,年龄,身高,教师编号
方法:吃饭,睡觉,喊叫,教学

员工类:Emploee:
属性:姓名,年龄,身高,员工编号
方法:吃饭,睡觉,喊叫,工作

共同的东西:
人类:
属性:姓名,年龄,身高
方法:吃饭,睡觉,喊叫

学生类/教师类/员工类 继承 自 人类

以后定义代码:
先定义人类:
人类: —-》父类,基类,超类
属性:姓名,年龄,身高
方法:吃饭,睡觉,喊叫

再定义 : —-》子类,派生类

学生类:Student:
属性:学生编号
方法:学习

教师类:Teacher:
属性:教师编号
方法:教学

员工类:Emploee:
属性:员工编号
方法:工作
继承的好处:提高代码的复用性
父类定义的内容,子类可以直接拿过来用就可以了,不用代码上反复重复定义了
需要注意的点
父类private修饰的内容,子类实际上也继承,只是因为封装的特性阻碍了直接调用,但是提供了间接调用的方式,可以间接调用。

多态