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

页面导航:首页 > 软件编程 > Java编程 > 从头认识java-8.4 内部类与向上转型

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

来源: 作者: 时间:2016-01-21 09:39 【

这一章节我们来讨论一下内部类与向上转型。跟普通的类一样,内部类也可以实现某个接口然后向上转型。为什么?因为这样能够更好的隐藏实现的细节,基本其他程序员使用继承来扩

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

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

为什么?

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

 

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();
}


 

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

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<