课时71:准确覆写

简介: 当子类继承某一个父类之后,如果发现父类中的某些功能不足的时候,往往会采用覆写的形式来对方法功能进行扩充,于是下面首先来观察一种覆写操作:1.观察覆写的问题2.追加注释

课时71  准确的覆写:@Override

 

摘要:当子类继承某一个父类之后,如果发现父类中的某些功能不足的时候,往往会采用覆写的形式来对方法功能进行扩充,于是下面首先来观察一种覆写操作:

1. 观察覆写的问题

2. 追加注释

 

01 观察覆写的问题

1.1 范例

我们简单的写一个程序代码:

class Channel {
    public void connect() {
        System.out.println("********** Channel **********");
    }
}
class DatabaseChannel extends Channel {
    public void connect() {
        System.out.println("子类定义的通道连接操作。");
    }
}
public class JavaDemo {
    public static void main(String args[]) {
        new DatabaseChannel().connect();
    }
}

image.png

编译结果为:

image.png

1.2 开发中可能会出现的问题

①虽然要明确的继承一个父类并且进行方法的覆写,但是有可能由于疏忽忘记编写 Extends,这种情况并不是覆写。


②在进行覆写时单词写错。此时几遍单词写错了,实际上程序在编译的时候也不会出现任何错误信息,因为它认为这是一个新的方法。所以在开发中为了避免这种问题的出现,可以在明确覆写的方法上追加一个注解。

 

02 追加注释


代码如下:

class Channel {
    public void connect() {
        System.out.println("************ Channel ************");
    }
}
class DatabaseChannel extends Channel {
    @Override  // 明确表示该方法是一个覆写来的方法
    public void connection() {
        System.out.println("子类定义的通道连接操作。");
    }
}
 
public class JavaDemo {
    public static void main(String args[]) {
        new DatabaseChannel().connect();
    }
}

image.png

如图所示,在代码中加上 @Override,此时明确表示该方法是一个覆写来的方法。此时暗示很明显,是覆写吗?并不是。

编译结果如下:错误。

image.png

此时将名词修改正确,并且再次编译,如下:

class Channel {
    public void connect() {
        System.out.println("********** Channel **********");
    }
}
class DatabaseChannel extends Channel {
    @Override  // 明确表示该方法是一个覆写来的方法
    public void connect() {
        System.out.println("子类定义的通道连接操作。");
    }
}
public class JavaDemo {
    public static void main(String args[]) {
        new DatabaseChannel().connect();
    }
}

image.png

编译结果为:

image.png

此时结果正常。

@Override  // 明确表示该方法是一个覆写来的方法
public void connect() {
    System.out.println("子类定义的通道连接操作。");
}

image.png

该注释主要是帮助开发者在程序编译的时候可以检查出程序的错误。


若代码百分百正确则不需要用到,可是我们并不能保证不会出错,若出错查不出来容易耽误较多时长,所以通过它,能保证覆写的准确性。

相关文章
|
7月前
|
Oracle Java 关系型数据库
课时48:JavaDoc文档简述
主要讲解了Java DOC文档的使用方法和技巧。首先,介绍了Java DOC的简介,强调了在开发过程中需要大量使用API文档。其次,详细解析了Java DOC的组成结构,包括位的完整定义、类的相关说明以及方法的详细解释。 1.Java DOC简介 2.Java DOC文档的组成
163 20
|
7月前
|
Java 程序员 数据处理
课时19:Java运算符(位运算符)
课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。
153 5
|
7月前
|
Java
课时18:Java运算符(逻辑运算符)
课时18介绍了Java中的逻辑运算符(与、或、非)。通过范例详细讲解了非操作的使用,展示了如何正确应用逻辑非(!)。接着分别探讨了与操作(& 和 &&)及或操作(| 和 ||),强调了短路运算符(&& 和 ||)在性能和安全性上的优势。课程通过具体代码示例演示了不同逻辑运算符的效果及其应用场景。
176 5
|
7月前
|
Java C++
课时124:assert断言
assert断言的含义以及使用 1.断言的引入 2.生活实例理解断言 3.Java 中断言的使用
162 2
|
7月前
|
Java
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
191 4
|
7月前
|
Java 开发者
课时98:泛型接口
本文聚焦Java泛型接口,阐述泛型不仅能在位(类)上定义,还可在接口中使用。通过实际代码示例,详细介绍泛型接口的定义以及子类实现泛型接口的两种方式,帮助读者理解其概念和应用,强调在实际编程中理解和掌握这些知识的重要性。 1.泛型接口的定义 2.泛型接口的子类实现方式
153 2
|
7月前
|
Java
课时103:生成jar文件
本文介绍了Java中生成和使用JAR文件的基本概念与操作。JAR文件用于将多个类文件打包成一个压缩文件,便于管理和分发。通过JDK提供的`jar`命令可以创建JAR文件,并可通过设置CLASSPATH环境变量来配置和使用这些文件。文中还演示了如何定义、编译和打包一个简单的Java程序为JAR文件,并详细解释了JAR文件的结构及配置方法。此外,简要提及了JDK 1.9后引入的模块化系统对JAR文件的影响。
189 1
|
7月前
|
测试技术
课时108:用例图
课时108介绍了用例图的设计与描述。用例图用于展示系统中不同角色的功能分配,如系统管理员拥有系统初始化、备份、公告发布等功能,而普通管理员仅负责公告管理。通过建立Use Cases图,可以直观呈现各角色的具体功能,帮助在项目设计阶段明确角色权限和职责。用例图是详细设计和概要设计的重要组成部分,有助于清晰表达系统的功能结构。
170 1
|
7月前
|
设计模式 Java uml
课时107:时序图
课时107介绍了时序图的描述与设计。时序图用于展示代码执行流程,如Java程序中接口IMessage、类MessageImpl及Factory的调用顺序。通过Power Designer创建UML Sequence Diagram,定义类操作结构并绘制消息传递路径,清晰呈现工厂模式下对象实例化和方法调用的过程。时序图帮助理解程序逻辑,适用于项目开发中的流程分析与文档记录。
208 1
|
7月前
|
设计模式 Java
课时89:工厂设计模式
课时89介绍工厂设计模式(Factory),涵盖接口的定义与使用、程序结构设计及工厂设计的核心概念。通过实例代码展示如何利用接口实现子类的向上转型,并通过工厂类解耦主类与子类的关系,从而实现更灵活和可扩展的设计。工厂模式使客户端无需关心具体子类的创建过程,仅需通过工厂类获取对象实例,简化了系统的维护和扩展。