当前位置: 首页 > news >正文

第二讲__提炼

1.多态

        1.定义

                常见的两种情况:

                1.继承

                        一个类A里面定义了一些方法,另一个类B继承了这个类并重写了A类的部分方法,主函数中用A类(父类)接收了一个B类(子类)对象,此时即时多态。

                2.接口

                        一个接口A里面定义类很多抽象方法,有一个类B实现了这个接口A,那么类B就需要重写接口A里面所有的抽象方法,当类B同时实现了其他接口C、接口D....时,这样这个类B就拥有了多个接口的行为,此时也是一种多态

        2.前提

                1.有继承或实现的关系
                2.存在父类引用指向子类
                3.存在方法的重写(继承)或实现(接口)

        3.好处

                定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利

        4.弊端

                多态情况下即当:父类 变量 = new 子类(); 时变量可以调用子类重写的父类的方法但是不能调用子类本身独有的方法。

        5.类型转换

                当 4.弊端 情况出现时,可以进行类型的强制转换以实现调用子类独有的方法。
                引用类型中需要使用instanceof关键字进行判断是否为该类型,若转换。

2.final

        final关键字可以修饰:类、方法、变量

        final修饰类时:该类不可再被继承
        final修饰方法时:该方法不可再被重写
        final修饰变量时:该变量不可再被赋值

3.抽象类

        1.定义

                用abstract修饰的抽象类
                用abstract修饰的方法抽象方法

        2.注意事项

                抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类,抽象类中也有非抽象方法。
                抽象类不能创建对象,仅能作为一种特殊的父类,被子类继承并实现。
                一个类继承了抽象类那么这个类就必须重写完该抽象类中所有的抽象方法,否则该类会被定义为抽象类。

        3.模版方法设计模式

        设计模式就是针对某类问题,前人总结出来的解决这类问题的套路,
        模板设计模式的作用是代码复用,把同一类问题常见的需要用的方法进行封装,将角色不同的功能部分定义成抽象方法,由子类继承这个模版并对其中的抽象方法进行重写,
        使用步骤:定义一个抽象类,把子类中相同的代码写成一个模版方法,也就是上面说的同一类问题常见的需要用的方法进行封装,把模块方法中不能确定的代码写成抽象方法,也就是上面所说的将角色不同的功能部分定义成抽象方法,并在模版方法中调用这些抽象方法,最后由子类继承抽象类,只需要重写父类的抽象方法就可以了,也就是上面说的由子类继承这个模版,并对其中的抽象方法进行重写。

4.接口

        1.定义

                1.定义接口

interface 方法名{抽象方法...非抽象方法...
}

                2.实现接口

public class 实现类 implements 接口名{@Overridepublic void 抽象方法() {//重写抽象方法}@Override.....

        2.注意

                1.接口不能创建对象,接口是用来被实现的,一个类可以实现很多个接
                   补充:
                        1.一个类实现很多类的时候,这个类便拥有了很多接口行为,可以看做多态的一种形式。
                        2.一个类只能继承一个父类,但是一个类可以实现多个接口;一个接口可以继承多个接口。
                2.接口的实现类需要实现接口里面的全部抽象方法,按需使用非抽象方法。若没有实现全部抽象方法,则该类会被定义为抽象类。

        3.好处

                1.面向接口编程
                2.解耦合

        4.JDK8新增的三种方法

                1.默认方法:default
                2.私有方法:private
                3.静态方法:static


http://www.mrgr.cn/news/14546.html

相关文章:

  • 使用Python写贪吃蛇游戏
  • 动态代理和静态代理的区别,动态代理怎么提高网络安全性
  • 结构型设计模式-适配器(adapter)模式-python实现
  • 【香橙派系列教程】(十六) 语音模块与阿里云结合
  • CSR和COO实现spgemm
  • Java面试宝典-java基础02
  • docker网络+跨主机容器之间的通讯
  • 【Java】—— Java面向对象基础:Java中类的构造器与属性初始化,Student类的实例
  • Kafka 到数据仓库:使用 bend-ingest-kafka 将消息加载到 Databend
  • 【Hot100】LeetCode—79. 单词搜索
  • Linux查看jvm相关参数以及设置调优参数
  • MFC工控项目实例之八选择下拉菜单添加打钩图标
  • BaseCTF-Web-Week2-WP
  • linux修改文件的修改时间
  • 三天吃透Java面试八股文
  • 从0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自动化框架(超细整理)
  • 不同搜索引擎蜘蛛的功能、‌抓取策略与技术实现差异探究
  • ArrayList 和 LinkedList 的区别?
  • Android 11.0 关于定制自适应AdaptiveIconDrawable类型的动态时钟图标的功能实现系列一
  • Redis中事务与乐观锁