`
李灵晖-raylee
  • 浏览: 135709 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-8.4 内部类与向上转型

 
阅读更多

这一章节我们来讨论一下内部类与向上转型。

跟普通的类一样,内部类也可以实现某个接口然后向上转型。

为什么?

因为这样能够更好的隐藏实现的细节,基本其他程序员使用继承来扩展接口和方法都不能访问相关实现。

package com.ray.ch03;

public class Test {
	private class Person implements CanRun {

		@Override
		public void run() {
			System.out.println("run");
		}
	}

	public Person getPerson() {
		return new Person();
	}

	public static void main(String[] args) {
		CanRun person = new Test().getPerson();
		person.run();
	}
}

interface CanRun {
	void run();
}

上面的代码通过了接口,完全隔绝了实现与接口的依赖,完全隐藏了实现的细节。

上面的代码即便我通过继承Test来扩展,但是由于Test所有的实现方法都是private的,因此,是不会有任何重写的方法。

package com.ray.ch03;

public class Test {
	private class Person implements CanRun {

		@Override
		public void run() {
			System.out.println("run");
		}
	}

	public Person getPerson() {
		return new Person();
	}

	public static void main(String[] args) {
		CanRun person = new Test().getPerson();
		person.run();
	}
}

class myTest extends Test {
	//没有任何需要重写的方法
}

interface CanRun {
	void run();
}

我们再来看一个例子:

package com.ray.ch03;

public class Test {
	private class Ship implements Destination {
		private String destination = "abc";

		@Override
		public String read() {
			return destination;
		}
	}

	public Ship destination() {
		return new Ship();
	}

	public static void main(String[] args) {
		Destination destination = new Test().destination();
		destination.read();
	}
}

class myTest extends Test {
	// 没有任何需要重写的方法
}

interface Destination {
	String read();
}


总结:这一章节主要讨论了内部类与向上转型,通过接口把实现完全隐藏起来。


这一章节就到这里,谢谢。

-----------------------------------

目录


分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

    标签 "jar" 和 "java" 明确了这个文件与Java编程语言和JAR文件格式的关系。Java开发者经常使用JAR文件来分发和部署他们的软件,因为它们可以作为一个单元被导入到其他项目中,或者作为独立的应用程序运行。JAR文件还...

    eclipse-java-2021-12-R-win32-x86_64.zip

    用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    在标签中,“ntrip__java实现”表明这个客户端是用Java编程语言编写的,这是Android应用开发的常见选择,因为Java与Android SDK兼容性良好。“ntrip_android_client”和“ntrip_client”则明确了这是一个面向Android...

    aip-java-sdk-4.2.0

    2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...

    aspose-words-java-23.6-jdk17.jar.zip

    【标题】"Aspose.Words for Java 23.6 with JDK 17 Support" Aspose.Words 是一个强大的文档处理库,专为Java开发者设计,用于创建、操作和转换各种文档格式。版本23.6是这个库的一个重要更新,它引入了对Java ...

    java-Swing外观包

    Java提供了两种内置的LookAndFeel:Metal(默认的Java Look and Feel)和SystemLookAndFeel,后者可以使Swing组件看起来与宿主操作系统(如Windows、Mac OS X或Linux)的原生控件一致。此外,开发者还可以自定义Look...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...

    JAVA编程高级-工具类.pdf

    `Object`类是所有Java类的基类,也就是说所有的类都直接或间接地继承自`Object`。因此,`Object`类中定义的方法可以在所有类中使用。 - **Object类常用方法** - `public boolean equals(Object obj)`:比较两个...

    Java---笔试题大全

    Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...

    java-多文件上传dome

    在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。

    java-lib

    "java-lib"是一个与Java编程相关的资源集合,很可能包含了各种常用的Java库,这些库可以帮助开发者在进行Java开发时提高效率,解决特定问题。"java-all-lib"的标签可能表示这个压缩包包含了广泛的Java库,涵盖了多种...

    使用渲染脚本实现模糊视图背景 - Java - 下载.zip

    在Java开发中,创建具有模糊效果的视图背景可以提升应用程序的用户体验,使其看起来更加现代和精致。"使用渲染脚本实现模糊视图背景"是一个常见的技术实践,它通常涉及到图形处理和用户界面的设计。在这个项目中,...

    curso-java-pildorasInf:从头开始学习Java

    通过这个课程,你将从安装Java开发环境(如JDK)开始,逐步学习Java语法、类与对象、封装、继承、多态等核心概念。此外,你还将接触到控制流(条件语句、循环)、异常处理、文件操作、集合框架、IO流、多线程、网络...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时。在这个名为"java-sdk-master.zip"的压缩包中,包含的是Leancound的Java SDK,这是一个专为集成Leancound服务而设计的开发工具包。Leancound是...

    _Java-集合容器-2.List及其实现类.ppt

    在Java编程中,集合容器是数据管理的重要组成部分,它们提供了灵活且高效的方式来存储和操作对象。List接口是Java集合框架中的核心接口之一,它继承自Collection接口,并具有特定的特性:元素可以重复,保持元素的...

    ks-java-lib:包含 Java 的 KS 库

    【标签】"Java" 表明这个库是专门为 Java 语言设计的,与 Java 语法兼容,并且可以在 Java 虚拟机(JVM)上运行。这意味着它可能使用了 Java 核心库中的接口和类,并且遵循了 Java 的编程规范。对于 Java 开发者来说...

    Free Spire.Doc for Java - 3.9 无水印

    在Java项目中,首先需要将`lib`目录下的`Spire.Doc.jar`库文件引入到类路径中。然后,可以通过以下基本步骤开始使用: 1. 创建`Document`对象,加载或新建Word文档。 2. 使用各种API添加或修改文档内容。 3. 调用`...

    java-pdf&word-jar.zip

    7. 与其他格式互转:支持PDF与XML、TXT、图片等格式的转换。 以上就是`java-pdf&word-jar.zip`压缩包中涉及到的Java库的关键功能和应用场景。开发者可以结合这些库,轻松地在Java程序中实现对PDF和Word文档的高效...

    Java-Desktop-Toolkit.rar_Genesys Desktop_软电话

    Java Desktop Toolkit允许开发人员利用Java编程语言创建功能丰富的、跨平台的软电话应用,这些应用可以与Genesys的系统无缝集成。 在描述中提到的"java版本软电话资料",意味着这个压缩包可能包含以下内容: 1. **...

Global site tag (gtag.js) - Google Analytics