Loading

08、三大特性

1、封装

概念: 尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。

访问修饰符: private(可将属性修饰为私有,仅本类可见)

2、继承

 程序中的继承,是类与类之间特征和行为的一种赠与或获得。

两个类之间的继承关系,必须满足“is a”的关系。

可根据程序需要使用到的多个具体类,进行共性抽取,进而定义父类

1、语法:

  class 子类 extends 父类{} // 定义子类时,显示继承父类

2、应用:

  产生继承关系之后,子类可以使用父类中的属性和方法,也可定义子类独有的属性和方法。

3、好处:

  既提高代码的复用性,又提高代码的可扩展性

4、特点: 

  Java为单继承,一个类只能有一个直接父类,但可以多级继承,属性和方法逐级叠加。

5、不可继承:

  构造方法:
    类中的构造方法,只负责创建本类对象,不可继承。
  private修饰的属性和方法:
    访问修饰符的一种,仅本类可见。
  父子类不在同一个package中时,default修饰的属性和方法:

    访问修饰符的一种,仅同包可见。

3、访问修饰符

4、方法重写

  当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行重写(Override) 。

方法重写原则:

  方法名称参数列表返回值类型必须与父类相同。

  访问修饰符可与父类相同或是比父类更宽泛。

方法重写的执行:

  子类重写父类方法后,调用时优先执行子类重写后的方法。

5、super关键字

  在子类中,可直接访问从父类继承到的属性和方法,但如果父子类的属性或方法存在重名(属性遮蔽、方法重写)时,需要加以区分,才可专项访问。

1、super访问方法

 2、super访问属性

6、继承中的对象创建

1、在具有继承关系的对象创建中,构建子类对象会先构建父类对象。

2、由父类的共性内容,叠加子类的独有内容,组合成完整的子类对象。

 

 

 

 

 

7、super调用父类构造方法

1、super调用父类无参构造

 

 

2、superi调用父类有参构造

 

 

8、this与super

super关键字的第一种用法:

  在子类的方法中使用“super.”的形式访问父类的属性和方法。

  例如: super.父类属性、super.父类方法();

super关键字的第二种用法:

  在子类的构造方法的首行,使用“super()”或“super(实参)”,调用父类构造方法。

注意:

  如果子类构造方法中,没有显示定义super()或super(实参),则默认提供super()。

  同一个子类构造方法中,super()、this()不可同时存在。

9、多态

9.1、生活中的多态

1、生活中的多态是指“客观事物在人脑中的主观反应”。

2、主观意识上的类别与客观存在的对象具有“is a”关系时,即形成多态。

9.2、程序中的多态

概念: 父类引用指向子类对象,从而产生多种形态。

二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。

父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。

子类重写了父类中的方法,执行子类中重写后的方法,否则执行父类中的方法。

 

9.3、多态的应用

1、使用父类作为方法形参实现多态,使方法参数的类型更为宽泛。

2、使用父类作为方法返回值实现多态,使方法可以返回不同子类对象。

 

9.4、向上转型(装箱)

 

9.5、向下转型(拆箱)

 

9.6、类型转换异常

 

 

9.7、instanceof关键字

向下转型前,应判断引用中的对象真实类型,保证类型转换的正确性。

语法: 父类引用 instanceof 类型   // 返回boolean类型结果

 

9.8、总结

多态的两种应用场景:

  使用父类作为方法形参,实现多态。

    调用方法时,可传递的实参类型包括: 本类型对象+其所有的子类对象。

  使用父类作为方法返回值,实现多态。

    调用方法后,可得到的结果类型包括: 本类型对象+其所有的子类对象。

多态的作用:

  屏蔽子类间的差异。

  灵活、耦合度低。

posted @ 2021-08-31 00:56  菜鸟的道路  阅读(104)  评论(0)    收藏  举报