这一章节我们来说一下final修饰的方法。
1.final与public
其实,使用final修饰方法,只不过就是不想继承的时候被修改。
一般我们继承的时候都可以覆盖public的方法,如下:
package com.ray.ch06;
public class Sub extends Father {
@Override
public void say() {
}
}
class Father {
public void say() {
}
}
上面的代码我们在sub里面覆盖重写了say方法。
但是如果我们使用final修改方法,在sub里面就不可以重写。
package com.ray.ch06;
public class Sub extends Father {
// @Override
// public void say() {//抛异常
// }
}
class Father {
public final void say() {
}
}
2.final与private
由于private方法天生就不可以被重写,因此,private方法都是默认有final修饰的。
package com.ray.ch06;
public class Sub {
private final void say() {
System.out.println("method say");
}
private final void say(int id) {
System.out.println("method say");
System.out.println("id:" + id);
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.say();
sub.say(2);
}
}
输出:
method say
method say
id:2
3.综合
我们下面再举一个例子,里面包含了public和private的方法。
package com.ray.ch06;
public class Sub extends Father {
public final void say() {
System.out.println("method say");
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.say();
Father father = new Sub();
}
}
class Father {
private final void say() {
System.out.println("method say");
}
}
乍看上去,以为sub重写了say,但其实没有,因为在father里面say是private,对外不公开,即便是子类,那么,对于子类的say而言,就不是覆盖重写father的say,因此,在引用Sub类型来new的时候,可以调用say方法,但是向上转型为father的时候,却不可以。
总结:这一章节主要讨论了final与private或者public方法结合时候的应用。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
LFS 6.6版本是一个稳定的版本,它提供了详细的指导和步骤来创建一个从头开始的Linux环境。该版本的中文版对中文用户来说是一个非常有价值的资源,因为其提供了中文的指导,使得阅读和理解过程更加顺畅。 LFS项目的...
LFS──LinuxfromScratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西(rawcode)作成符合自己口味的菜肴──个性化的...
在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...
用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...
标题中的“api-ntrip-java-client-master.zip”是一个包含Java实现的NTRIP客户端的源代码压缩包,专门针对Android平台。NTRIP(Networked Transport of RTCM via Internet Protocol)是一种用于实时传输GPS(全球...
2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...
标题“poi-bin-3.1-FINAL-20080629”指的是Apache POI项目的二进制发行版,版本为3.1-FINAL,发布日期为2008年6月29日。Apache POI是一个流行的开源Java库,它允许开发人员创建、修改和读取Microsoft Office格式的...
在Java代码中,他们可以通过导入Aspose.Words相关的类和方法,开始执行文档处理任务。例如,下面是一个简单的例子,演示如何使用Aspose.Words读取和保存一个Word文档: ```java import com.aspose.words.Document; ...
【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...
Java Swing是Java GUI(图形用户界面)开发的一个重要组件,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing提供了丰富的组件库,允许开发者创建美观且功能丰富的交互式用户界面。在这个...
Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...
在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。
Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时。在这个名为"java-sdk-master.zip"的压缩包中,包含的是Leancound的Java SDK,这是一个专为集成Leancound服务而设计的开发工具包。Leancound是...
1. **源代码**:这是实现模糊视图背景的核心部分,可能包含Java类和方法,用于处理图像并应用模糊效果。 2. **示例应用**:可能包含一个简单的Java应用,演示如何使用库来创建模糊视图背景,这对于开发者理解和学习...
这些库通常以JAR(Java Archive)文件的形式存在,里面封装了类和方法,可供应用程序调用。Java库广泛应用于网络通信、数据库操作、图形用户界面(GUI)、数学计算、XML处理、安全、并发等各个领域。 1. **网络通信...
3. 调用`save`方法保存文档到指定格式和路径。 例如,创建一个简单的Word文档并保存为PDF: ```java import com.spire.doc.*; public class Main { public static void main(String[] args) { // 创建Document...
Java平台提供了一系列库来支持这些操作,本项目中涉及的主要有Spire.Doc、Spire.PDF以及Apache PDFBox。让我们详细探讨这些库的功能及其在Java开发中的应用。 首先,`Spire.Doc.jar`是Spire.Doc for Java的库文件,...
【标题】"ks-java-lib:包含 Java 的 KS 库" 提供的是一个专门为 Java 开发者设计的库,它扩展了 Java 的功能,为开发者在处理特定任务时提供了便利。这个库可能包含了丰富的类和方法,旨在简化开发过程,提高代码的...