Java SE面向对象6
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使用特征
abstract修饰的方法 没有方法体
abstract修饰的方法,要求定义在abstract修饰的类内,或者接口interface内
abstract修饰的类,你认为有没有类对象???
abstract修饰的类内,是有可能存在abstract修饰的方法,而abstract修饰的方法是没有方法体的,如果能够得到一个abstract修饰类的对象,通过对象如何调用这些没有方法体的abstract方法。abstract修饰的类,然后呢类内没有任何的一个abstract修饰的方法,请问有意义吗?
毫无意义!!!
Java SE面向对象6相关推荐
- [零基础学JAVA]Java SE面向对象部分-10.面向对象基础(05)
上季内容回顾: 1.类和对象 2.引用的内存分配 3.封装性 4.构造方法 5.String类 6.this关键字 在编写代码之前建立好应该具备的类,之后再为类添加一些属性,属性都是需要被封装的,封装 ...
- [零基础学JAVA]Java SE面向对象部分-18.面向对象高级(06)
上季内容回顾: 1.面向对象中接口与抽象类的具体应用. 可以通过对象的多态性,为父类实例化,之后一切的操作标准以父类为主. 本季主要知识点: 讲解抽象类与接口的关系. 1.一个抽象类中能否包含一 ...
- [零基础学JAVA]Java SE面向对象部分-08.面向对象基础(03)
上季内容回顾: 1.封装性 · 对外不不可见,属性前加入private关键字 · 通过setter和getter方法设置和取得封装属性 2.构造方法 · 与类名称相同,无返回值类型 · 在对象实例化( ...
- [零基础学JAVA]Java SE面向对象部分-17.面向对象高级(05)
上季内容回顾: 1.对象的多态性 2.抽象类和接口 本季主要知识点: 抽象类和接口的实际应用 1.子类对象可以为父类对象实例化,之后调用的方法都是子类中已经被覆写过的方法. 2.就可以利用此特性, ...
- ⑦Java SE知识点回顾与小结(面向对象)
Java SE 面向对象 一.面向对象的优点: 1)面向对象的思维方式更贴近于现实生活的思维方式 2)面向对象思维方式更体现于管理者,面向过程体现于执行者 3)可以将复杂的问题简单化 二. ...
- 学习笔记:Java SE(2)
Java SE 面向对象(上) 面向对象的概念 对象 类 构造方法 this 关键字 垃圾回收 创建对象 Static关键字 成员内部类和访问权限 非静态内部类 静态内部类 访问权限 实例运用:超市购 ...
- Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming)
Java SE 008 理解面向对象程序设计 (Inside Object Oriented Programming) 前言:此笔记为圣思园张龙老师讲述的java视频课程笔记,自己看视频学习时记录的, ...
- 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...
- Java SE 12扩展Switch语句/表达式完整指南
本文提供了Java SE 12扩展Switch语句/表达式的完整指南.文章详细介绍了扩展Java switch语句将其用作增强版switch语句或表达式.为帮助理解本文提供了具体案例. 本文要点 现在 ...
最新文章
- 解决xe7无法找到system.pas的问题
- centos6.8下安装部署LNMP(备注:nginx1.8.0+php5.6.10+mysql5.6.12)
- 未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结
- 基于FPGA的智能PID控制器的设计与实现
- mysql 基础选择题_mysql基础12(mysql练习题)
- 利用python将txt文件中的内容写入Excel文件中
- 设置MYSQL允许用IP访问
- Qt工作笔记-Qt移植到Linux上时提升窗口部件大小写问题(VS上存在的问题)
- 开源数据屏蔽 数据加密_数据屏蔽或更改行为信息
- Vue.js 运行机制全局概览浅读
- maven学习(五)——maven命令的组合使用
- [Swift][leetcode] 433. 最小基因变化
- C++ std::condition_variable notify_one()与notify_all()的作用
- Linux内核虚拟内存之页表管理
- php写猴子搬香蕉问题,世界500强企业面试题:猴子吃香蕉
- 数学建模之matlab入门篇
- STM32-GPRS模块连接系统主站
- centos7安装python开发环境(python3,postgresql,sublime,supervisor)
- docker安装php拓展
- 在c语言中作为字符串结束标志是什么,字符串的结束标志是什么?
热门文章
- 关于如何进入《达芬奇密码》中文站
- 【语言模型生成分子更好】Language models can learn complex molecular distributions
- 迁移学习——Low-Rank Transfer Subspace Learning
- Linux文件搜索命令介绍——locate、find、xargs、touch、stat
- 计算机原理meg,脑磁图(MEG).docx
- js-文档碎片的理解与使用
- c语言中ntdll.dll,在Win32环境中从ntdll.dll调用Nt函数,C
- 电商项目顺序图_工程项目文件的分类整理
- HBuilder X内置浏览器插件安装失败解决方案
- DDD(六)【领域事件与事件总线】