Java概念:封装和继承

封装(三大特征)

面向对象的三大特征:封装 继承 多态

封装:就是把抽象的数据【属性】和对数据的操作【方法封装在一起】,数据被保护在内部,程序的其他部分只有通过被授权的操作【方法】,才能对数据进行操作

封装的理解和好处

  1. 隐藏实现细节
  2. 可以对数据进行验证,保证安全合理

封装的实现步骤(三步)

  1. 将属性进行私有化private 【不能直接修改属性】

  2. 提供一个公共(public)的set方法,用于对属性判断并赋值

    public void setXxx(类型 参数名){//Xxx表示某个属性

    ​ //加入数据验证的业务逻辑(不能想改就改)

    ​ 属性 = 参数名;

    }

  3. 提供一个公共的(public)get方法,用于获取属性的值

    public 数据类型 getXxx(){//权限判断,Xxx某个属性(不能随意访问数据,可以进行用户验证)

    ​ return xx;

    }

问题:

set方法和构造器,有构造器了还要set方法干嘛,直接构造方法破解!?

解决办法:

把set方法写在构造器中,这样就仍然可以验证

继承(三大特征)

解决代码复用性!

关键字:extends

基本语法:

class 子类 extends 父类{

}

子类会自动拥有父类定义的属性和方法

细节问题

  1. 子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过公共的方法去访问

    在父类提供一个public方法,返回私有属性 子类就可以访问这个私有属性了 。简而言之就是子类想调用父类的私有属性和私有方法,只能通过父类提供的public方法来间接访问

  2. 子类必须调用父类的构造器,完成父类的初始化

  3. 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过

    在子类的无参构造器中,有下面这句话

    super(); //默认调用父类无参构造器 可写可不写 编译器会自动加上

  4. 如果希望指定去调用父类的某个构造器,则显式的调用一下:super(参数列表)

  5. super在使用时,必须放在构造器的第一行

  6. super()和this()都只能放在构造器的第一行,因此这两个方法不能共存在一个构造器 有this就不能有super

  7. java所有类都是Object类的子类

  8. 父类构造器的调用不限于直接父类!将一直往上追溯直到Object类

  9. 子类最多只能继承一个父类(直接继承),即java中是单继承机制

  10. 不能滥用继承,子类和父类之间必须满足is-a的逻辑关系

    如 pig is a animal.

猜你喜欢

转载自blog.csdn.net/weixin_44199207/article/details/118566411
今日推荐