`
lippeng
  • 浏览: 454881 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java HelloWorld 内部类版

阅读更多

以前学的时候,没怎么看内部类,觉得这个东西很少用到,就先跳过了。现在发现,是时候拾起来了。工作中,逐步的都用到了。所以,就想写个HelloWorld内部类版。

最初想写的是:用Java实现闭包,写了半路,发现不对了,今天的代码不是闭包了。也懒着改了,先发出来吧。

 

先定义了一个接口:

 

package com.lippeng;

/**
 * 随便定义一个接口,里面有个方法
 * 
 * @author lippeng
 * 
 */
public interface Isayer {
	public void say();
}

 

然后,是 HelloWorld类:

 

package com.lippeng;

public class HelloWorld {

	// 看好了,这个东西,是HelloWorld的属性
	private String word;

	/**
	 * Constructor
	 * 
	 * @param word
	 */
	public HelloWorld(String word) {
		this.word = word;
	}

	private class Recorder implements Isayer {

		@Override
		public void say() {

			// 打出 外部类的属性
			System.out.println(word);
		}
	}

	private class Recorder2 implements Isayer {

		@Override
		public void say() {

			// 倒序打出外部类的属性
			System.out.println(new StringBuffer(word).reverse().toString());
		}
	}

	/**
	 * 这个方法,只是得到一个内部类对象
	 * 
	 * @return
	 */
	public Isayer getSayer() {
		return new Recorder();
	}

	public Isayer getReverseSayer() {
		return new Recorder2();
	}

}

 

写个类,测试一下:

 

 

package com.lippeng;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		// 先创建一个对象
		HelloWorld helloWorld = new HelloWorld("Hello World");

		// 得到 接口:它的好处是,helloWorld对象完全可见
		Isayer recorder = helloWorld.getSayer();
		recorder.say();// 这里说出来的东西,来自 helloWorld 对象

		// 只是这样,好处还不明显,看下面的

		// 想说的是,同一个接口,同一个类内部,实现不同的功能
		// 如果不是接口,是抽象类,也是一样的
		Isayer reverseSayer = helloWorld.getReverseSayer();
		reverseSayer.say();
	}
}
 

 

要说的都在代码中,就不废话了。

 

分享到:
评论

相关推荐

    Hello world

    例如,如果类名为`HelloWorld`,则文件名为`HelloWorld.java`。Java是严格的面向对象语言,因此每个源代码文件至少包含一个公共类(public class)。 3. **公共类(Public Class)**:在Java中,`public`关键字表示...

    理解java的helloworld[归类].pdf

    首先,当尝试编译`javac HelloWorld`时,出现“'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件”的错误,这是因为Java Development Kit (JDK) 的环境变量没有正确设置。在Windows系统中,需要在系统...

    实现HELLOWORLD入门和常见错误分析

    HelloWorld.java`命令将在当前目录下创建包目录和类文件。若不指定`-d`,`.class`文件将直接生成在当前目录下。运行时,应确保类文件所在目录已添加到`CLASSPATH`或使用完整的类路径调用。 #### 增强理解:与C/C++...

    100-ways-to-print-HelloWorld-in-java-master_helloworld_

    这个名为 "100-ways-to-print-HelloWorld-in-java-master_helloworld_" 的项目显然是一个有趣的挑战,旨在探索使用Java语言打印 "Hello, World!" 的一百种不同方法。下面我们将深入探讨这个主题,详细介绍各种可能的...

    Velocity之HelloWorld配置

    ** Velocity之HelloWorld配置详解 ** Velocity是一款Java模板引擎,它是Apache软件基金会的Jakarta项目之一,主要用于生成动态Web内容。Velocity通过将内容展示与业务逻辑分离,使得开发者可以专注于后端逻辑,而...

    Learn Java File By Hello World Example

    在学习Java类文件的过程中,我们将通过一个简单的“Hello World”示例来探索Java类文件的内部结构和编译后的字节码。Java开发者通过深入理解Java类文件的组成,能够更好地掌握Java语言的各种高级特性,比如反射机制...

    基于Java的匿名内部类分析与应用.pdf

    "基于Java的匿名内部类分析与应用" 匿名内部类是Java语言中的一大特色,它可以在类的定义中嵌套定义另一个类。匿名内部类没有名字,所以不能用匿名类声明对象,但是可以直接用匿名类创建一个对象。 匿名内部类的...

    JAVA_匿名内部类

    Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义完整类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的情况,尤其是在需要简洁代码的地方。以下是对Java匿名内部...

    springboot的helloworld入门程序

    这个"springboot的helloworld入门程序"是初学者理解并掌握SpringBoot基础的一个绝佳起点。下面我们将深入探讨SpringBoot的基本概念、核心特性以及如何创建一个简单的"Hello, World!"程序。 1. **SpringBoot简介** ...

    hello world hello

    结合【部分内容】,这部分内容并没有直接关联到"hello world hello"或"java",而是深入讲解了天文学和天体物理学中的吸积盘理论。吸积盘是围绕天体(如黑洞、中子星或恒星)旋转的高温气体盘,其理论对于理解宇宙中...

    java基础知识入门_java_world_入门_

    3. **编译与运行**:在命令行中,导航到`HelloWorld.java`所在的目录,使用`javac HelloWorld.java`命令进行编译,这将生成一个`HelloWorld.class`文件。接着,运行`java HelloWorld`,你将在控制台看到“Hello, ...

    SpringMVC-HelloWorld_helloworld_joint2p_

    - 方法体内部,我们可以使用`@ResponseBody`注解返回一个简单的字符串,如"HelloWorld",或者用`ModelAndView`对象来指定视图名。 3. **视图解析**: - 视图解析器会根据控制器返回的视图名来寻找实际的HTML页面...

    Spring之HelloWorld

    创建一个名为`HelloWorld`的Java类,这个类将被Spring管理: ```java package com.example; public class HelloWorld { private String message; public void setMessage(String message) { this.message ...

    spring學習筆記——Helloworld

    在我们的HelloWorld示例中,我们将看到如何使用XML配置文件或Java配置来声明和管理对象及其依赖。 接着,我们需要设置项目环境。通常,这包括添加Spring库的依赖到项目的构建工具配置(如Maven或Gradle),并创建一...

    华为java内部培训讲义

    javac HelloWorld.java # 执行 java HelloWorld ``` #### 三、Java垃圾回收机制 - **垃圾回收**: 由JVM的后台线程GC自动执行,主要负责释放不再使用的对象所占用的内存空间。 - **触发条件**: 当JVM检测到内存不足...

    jni简单使用

    生成HelloWorld.h文件(若提示找不到HelloWorld类文件,Java代码中不要写package) 有package时,在包所在目录下打开终端,输入命令javah -jni com.gjl.jnitest.HelloWorld (com.gjl.jnitest为包名) 生成 ...

    Android WebView 之Helloworld

    "Android WebView 之Helloworld"这个主题将引导我们了解如何在Android应用中集成和使用WebView来展示一个简单的网页。 首先,我们需要理解WebView的基本概念。WebView是Android SDK中的一个类,它是Android系统提供...

    HelloWorld的javap -verbose HelloWorld 字节码初探

    标题中的“HelloWorld的javap -verbose HelloWorld”指的是在Java编程环境中,通过`javap`这个命令行工具来反汇编一个简单的“HelloWorld”程序,以深入理解字节码的工作原理。`javap`是Java Platform Debugger ...

    spring hello world

    - 将`HelloWorld`类声明为Spring的Bean,这通常通过在Java配置类或XML配置文件中完成。 4. **配置Spring**:配置Spring容器以管理`HelloWorld` Bean。如果是Java配置,你需要创建一个配置类,并使用`@Component`...

    Hello_java_test_

    标题中的"Hello_java_test_"可能是指一个用于测试的Java项目或者是一个特定的Java类或方法名,这通常在开发过程中用来标识与测试相关的代码。描述中提到的"这个很好是不错的文件jar文件,我们都是这个要用的jar文件...

Global site tag (gtag.js) - Google Analytics