1. 继承
1.1 接上回书 有其父才有其子

2. 继承带来的问题
2.1 父类的方法不一定合适子类

开发中父类的方法继承给子类使用,但是子类使用不太符合子类的情况,如果子类方法重新定义,重新命名,又会导致代码冗余,开发压力较大。

2.2 重写【Override】

前提条件1. 重写是存在与继承中子类,或者【遵从中的实现类】2. 重写情况下要求子类中的方法和父类中的方法,方法声明完全一致3. 方法体按照子类的情况来完成注意事项1. 子类重写父类方法,要求必须加上@Override严格格式检查2. @Override会检查子类重写的方法,方法声明是否和父类一致

2.3 重写能解决所有问题吗?

继承情况下:1. 父类的方法不符合子类的情况2. 需要重写的情况下,但是子类不重写没有任何的语法错误3. 会导致代码在实际运行阶段不符合生活逻辑和需求
【强制重写】

3. abstract关键字【难点,但是又很简单】

3.1 abstract概述

【前提】abstract修饰的方法,子类必须重写

3.2 abstract关键字代码使用和注释

package com.qfedu.c_abstract;/*** LOL英雄类,每一个英雄都有QWER技能* * @author Anonymous*//** 第一步:*       使用abstract关键字修饰要求子类重写的方法* 【方法报错】*       Abstract methods do not specify a body*         abstract修饰的方法没有方法体* 【Eclipse快速修复】*      Ctrl + 1*      选择 Remove Method Body 删除方法体* * 第二步:* 【方法报错】*        The abstract method q in type LOLHero can only be defined by an abstract class*         LOLHero类内的abstract修饰方法q(),有且只能定义在一个abstract修饰的类内* 【类名报错】*        The type LOLHero must be an abstract class to define abstract methods*      LOLHero类必须是一个abstract类,才可以定义abstract方法* 【语法要求】*      abstract修饰的方法,必须在定义在abstract修饰的类内或者XXXXXXXXXXXXXXXXXXXXXXXXX* 【Eclipse快速修复】*         Ctrl + 1*      选择 Make Type 'LOLHero' abstract 使用abstract修饰LOLHero类* * 第三步:* 【子类报错】*         The type Thresh must implement the inherited abstract method LOLHero.q()*       Thresh类必须实现继承LOLHero类内的abstract方法q*         因为abstract修饰的方法,在父类abstract类内没有方法体,子类如果想要使用abstract修饰的方法*         必须完成方法体的实现* 【Eclipse快速修复】*      Ctrl + 1*      选择 Add unimplemented methods 添加未实现方法*/
abstract class LOLHero {abstract public void q();abstract public void w();abstract public void e();abstract public void r();
}/*** 锤石类继承LOLHero类* * @author Anonymous**/
class Thresh extends LOLHero {@Overridepublic void q() {System.out.println("死亡判决");}@Overridepublic void w() {System.out.println("魂引之灯");}@Overridepublic void e() {System.out.println("厄运钟摆");}@Overridepublic void r() {System.out.println("幽冥监牢");}}/*** 维鲁斯类继承LOLHero类* * @author Anonymous**/
class Varus extends LOLHero {@Overridepublic void q() {System.out.println("穿刺之箭");}@Overridepublic void w() {System.out.println("枯萎箭袋");}@Overridepublic void e() {System.out.println("恶灵箭雨");}@Overridepublic void r() {System.out.println("腐败链锁");}}public class Demo1 {public static void main(String[] args) {Thresh saolei = new Thresh();saolei.q();saolei.e();saolei.w();saolei.r();System.out.println("--------------------------");Varus varus = new Varus();varus.q();varus.w();varus.e();varus.r();}
}

3.3 abstract使用特征

  1. abstract修饰的方法 没有方法体

  2. abstract修饰的方法,要求定义在abstract修饰的类内,或者接口interface内

  3. abstract修饰的类,你认为有没有类对象???
    abstract修饰的类内,是有可能存在abstract修饰的方法,而abstract修饰的方法是没有方法体的,如果能够得到一个abstract修饰类的对象,通过对象如何调用这些没有方法体的abstract方法。

  4. abstract修饰的类,然后呢类内没有任何的一个abstract修饰的方法,请问有意义吗?
    毫无意义!!!

Java SE面向对象6相关推荐

  1. [零基础学JAVA]Java SE面向对象部分-10.面向对象基础(05)

    上季内容回顾: 1.类和对象 2.引用的内存分配 3.封装性 4.构造方法 5.String类 6.this关键字 在编写代码之前建立好应该具备的类,之后再为类添加一些属性,属性都是需要被封装的,封装 ...

  2. [零基础学JAVA]Java SE面向对象部分-18.面向对象高级(06)

    上季内容回顾: 1.面向对象中接口与抽象类的具体应用.    可以通过对象的多态性,为父类实例化,之后一切的操作标准以父类为主. 本季主要知识点: 讲解抽象类与接口的关系. 1.一个抽象类中能否包含一 ...

  3. [零基础学JAVA]Java SE面向对象部分-08.面向对象基础(03)

    上季内容回顾: 1.封装性 · 对外不不可见,属性前加入private关键字 · 通过setter和getter方法设置和取得封装属性 2.构造方法 · 与类名称相同,无返回值类型 · 在对象实例化( ...

  4. [零基础学JAVA]Java SE面向对象部分-17.面向对象高级(05)

    上季内容回顾: 1.对象的多态性  2.抽象类和接口 本季主要知识点: 抽象类和接口的实际应用 1.子类对象可以为父类对象实例化,之后调用的方法都是子类中已经被覆写过的方法.  2.就可以利用此特性, ...

  5. ⑦Java SE知识点回顾与小结(面向对象)

    Java SE 面向对象 一.面向对象的优点: ​ 1)面向对象的思维方式更贴近于现实生活的思维方式 ​ 2)面向对象思维方式更体现于管理者,面向过程体现于执行者 ​ 3)可以将复杂的问题简单化 二. ...

  6. 学习笔记:Java SE(2)

    Java SE 面向对象(上) 面向对象的概念 对象 类 构造方法 this 关键字 垃圾回收 创建对象 Static关键字 成员内部类和访问权限 非静态内部类 静态内部类 访问权限 实例运用:超市购 ...

  7. Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming)

    Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming) 前言:此笔记为圣思园张龙老师讲述的java视频课程笔记,自己看视频学习时记录的, ...

  8. 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...

  9. Java SE 12扩展Switch语句/表达式完整指南

    本文提供了Java SE 12扩展Switch语句/表达式的完整指南.文章详细介绍了扩展Java switch语句将其用作增强版switch语句或表达式.为帮助理解本文提供了具体案例. 本文要点 现在 ...

最新文章

  1. 解决xe7无法找到system.pas的问题
  2. centos6.8下安装部署LNMP(备注:nginx1.8.0+php5.6.10+mysql5.6.12)
  3. 未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结
  4. 基于FPGA的智能PID控制器的设计与实现
  5. mysql 基础选择题_mysql基础12(mysql练习题)
  6. 利用python将txt文件中的内容写入Excel文件中
  7. 设置MYSQL允许用IP访问
  8. Qt工作笔记-Qt移植到Linux上时提升窗口部件大小写问题(VS上存在的问题)
  9. 开源数据屏蔽 数据加密_数据屏蔽或更改行为信息
  10. Vue.js 运行机制全局概览浅读
  11. maven学习(五)——maven命令的组合使用
  12. [Swift][leetcode] 433. 最小基因变化
  13. C++ std::condition_variable notify_one()与notify_all()的作用
  14. Linux内核虚拟内存之页表管理
  15. php写猴子搬香蕉问题,世界500强企业面试题:猴子吃香蕉
  16. 数学建模之matlab入门篇
  17. STM32-GPRS模块连接系统主站
  18. centos7安装python开发环境(python3,postgresql,sublime,supervisor)
  19. docker安装php拓展
  20. 在c语言中作为字符串结束标志是什么,字符串的结束标志是什么?

热门文章

  1. 关于如何进入《达芬奇密码》中文站
  2. 【语言模型生成分子更好】Language models can learn complex molecular distributions
  3. 迁移学习——Low-Rank Transfer Subspace Learning
  4. Linux文件搜索命令介绍——locate、find、xargs、touch、stat
  5. 计算机原理meg,脑磁图(MEG).docx
  6. js-文档碎片的理解与使用
  7. c语言中ntdll.dll,在Win32环境中从ntdll.dll调用Nt函数,C
  8. 电商项目顺序图_工程项目文件的分类整理
  9. HBuilder X内置浏览器插件安装失败解决方案
  10. DDD(六)【领域事件与事件总线】