Day12 继承、final、super、覆写、多态

1.面向对象

1.1 Extends

1.1.1 是什么

继承:

         1.继承是从已有类中,派生出新的类,新的类拥有父类的属性和行为,并且还能扩展新的属性和行为,

         2.java中只支持单继承,不支持多继承,这样可以让java中的继承关系比较简单

         一个类只能有一个父类,但是一个父类可以有很多子类,易于维护和管理

         为了解决单继承功能变弱问题,java提出了接口,一个类可以实现多个接口

         3.继承是可以传递的,比如A继承B,B继承C, 则A也会拥有C的功能

         4.私有属性和构造方法是不能被继承的

         5.如果一个类没有显示继承其他类,则该类继承Obiect

         java.lang.Object 是 java提供的根类(祖宗)

         Object中的功能,是所有类对象都有的

1.1.2 能做什么

解决的问题:

         提高了代码效率,提升了代码的重用性

1.1.3 怎么用

语法:

          class 子类名 extends 父类名{ }

Day12 继承、final、super、覆写、多态

1.2 super

1.2.1 是什么

super:

         1.官方说法是保存了父类型特征

         2.在有继承的关系的体系中,可以通过super保存父类的数据

1.2.2 能做什么

         1.用在成员、构造方法中,区分父类和子类同名的数据(同名后,子类的优先级高于父类,就需要super.xxx才行)

         2.用在子类构造方法中,调用指定的父类构造方法

         语法: super(参数);必须在子类构造方法的第一行

         如果子类构造方法中 没有使用this(xxx) 也没有使用super(xxx)则有一个super()去调用父类的无参构造

         this(xxx)和super(xxx)都必须出现在构造方法第一行,也就意味着他们两个不能同时出现

         3.this和super都不能出现在静态上下文中

1.2.3 怎么用

1.2.3.1 区分父类同名属性

Day12 继承、final、super、覆写、多态

1.2.3.2 调用父类指定构造方法

Day12 继承、final、super、覆写、多态

         构造方法私有化之后,就不能再被继承了

         因为子类构造方法中就需要调用父类的构造方法,一旦私有化,就会因为权限问题访问不了

1.3 Override

1.3.1 是什么

         Override 是方法的重写/覆写/覆盖,复写特指成员方法,除了成员方法,其他的都不能覆写

1.3.2 应用场景

1. 什么时候需要对父类方法需要覆写/p>

           当父类的功能满足不了子类的需求的时候

2.覆写条件

           2.1 有继承关系的体系中

           2.2 方法名必须一致,如果方法名不一致,就是两个方法了

           2.3 参数列表必须一致,如果参数列表不一致,这就是方法重载,也是两个方法

           2.4返回值必须一致

           2.5不能有更宽范的异常(异常只能越来越少)

           2.6 不能有更低的访问权限

3.覆写的意义

         功能越来越强

         使用范围越来越广

         错误越来越少

         @Override是源码注解,在编译的时候,判断该方法是否是覆写的方法,防止写错,仅此而已,生成class之后该注解就会被去掉。

         如果不加,比如方法名写错了,那么也就是两个方法,但是加上@Override就会进行校验操作

1.4 Final

1.4.1 是什么

final: 是修饰符,表示最后的,最终的,不可更改的

类:final修饰的类 不能被继承

变量:没有默认值 不能二次赋值,必须显式赋值(不能有不赋值的情况)

方法:final修饰的成员方法不能被覆写

final 修饰的静态变量,一般称为常量,public static final xxxx; 常量名建议全部大写

1.4.2 怎么用

Day12 继承、final、super、覆写、多态

Day12 继承、final、super、覆写、多态

深入 final, final 修饰的引用类型

Day12 继承、final、super、覆写、多态 Day12 继承、final、super、覆写、多态

1.5 多态

1.5.1 软件设计六大原则

1 单一职责原则:

           原则思想:一个方法只做一件事,一个类只负责一个职责,当然当前职责改动,不会影响其他程序

           常识原则,几乎所有程序员都会遵循这个原则

           优点:降低类和类之间的耦合度,提高可读性,可维护性,可扩展性,降低可变性的风险

2 里氏替换原则

           原则思想:能使用父类的地方,就一定可以使用子类

           子类还可以扩展父类的功能,但是不能更改父类的功能,并且子类还可以有自己特有的功能

           优点:增加了程序的健壮性,即使有了新的子类,原子类不受影响,可以正常执行

3 依赖倒置原则

           原则思想:高层次不应该依赖低层次,都应该依赖于抽象

           优点:拥抱多种变化,可以减少需求变化带来的工作量

4 接口隔离原则

           原则思想:类和接口之间应该建立在最小的接口上

5 迪米特法则

           原则思想:又称为最少知识原则,一个对象尽可能的少了解其他对象

           一个类中尽量减少对其它类的依赖

6 开闭原则

           原则思想:对修改关闭,对扩展开放

           尽量通过扩展软件实体来解决需求的变化,而不是通过修改已有的代码来完成变化

1.5.2 是什么

什么是多态:

           多态就是里氏替换原则的一种体现

                      能使用父类的地方就一定可以使用子类

           多态就是父类引用指向子类对象

                  父类引用:使用父类类型 创建的引用类型变量

                  指向:通过这个引用可以找到谁

                  通过父类创建的一个引用类型变量 ,找到了子类的对象

                  父类类型   变量名  =   new   子类();

                  Animal a = new Cat();多态

1.5.3 怎么用

多态的几种形式:

           1 直接多态: 父类 变量 = new 子类();

           2 形参/实参: 参数列表用父类声明,调用方法 传递子类对象

           

Day12 继承、final、super、覆写、多态

           3 返回值多态: 返回值类型是父类类型,但返回的对象 是子类对象

         

Day12 继承、final、super、覆写、多态

         

Day12 继承、final、super、覆写、多态

          

Day12 继承、final、super、覆写、多态

           

Day12 继承、final、super、覆写、多态

1.5.4 为什么这么用(优点)

Day12 继承、final、super、覆写、多态

1.5.5 缺点

            丢失子类特有的属性

1.5.6 多态属性调用

多态进行属性调用:

           1.父类没有的,都调用不了(因为多态缺点,丢失子类特有的属性) 

           2.父类有的,子类没有的, 执行父类

           3.父类和子类都有,除了成员方法执行子类,其他全部执行父类(因为只有成员方法可以覆写) 

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91518 人正在系统学习中

来源:java_yangXL

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月4日
下一篇 2021年6月4日

相关推荐