抽象类实现多个接口与接口的继承的对比,实现良好的设计模式!


//少说废话,上代码:

import java.util.*;

interface Instrument
{
	static final int i = 2;
	void tune();
}

//测试多个接口的测试

interface Chord
{
	void shake();
}

interface RockCase
{
	void cover();
}

//利用抽象类的情况;
abstract class Sum implements Chord, RockCase, Instrument
{
	abstract public void tune();
	abstract public void shake();
	abstract public void cover();

}

interface  Sum_2 extends Chord, RockCase, Instrument
{
	//有次可以发现,一般情况下, extends 由于单一类,但是可以引用多个基类的接口,只要用逗号以一分开就好了;
}

//本质是实现也是继承

class Piano implements Instrument
{
	public void tune (){
		System.out.println("钢琴的声音");
	}
}

class Drum implements Instrument
{
	public void tune(){
		System.out.println("鼓的声音");
	}
}

class Violine implements Instrument
{
	public void tune(){

		System.out.println("小提琴的声音");
	}
}

class Erhu implements Instrument
{
	public void tune (){
		System.out.println("二胡的声音");
	}
}

class Flute extends Sum
{
	public void tune(){
		System.out.println("笛子再吹");
	}

	public void shake(){
		System.out.println("空气在震动");
	}
	public void cover(){
		System.out.println("箱子装起来笛子了,笛子不吹了!");
	}
}

class Flute_2 implements Sum_2
{
	public void tune(){
		System.out.println("笛子再吹");
	}

	public void shake(){
		System.out.println("空气在震动");
	}
	public void cover(){
		System.out.println("箱子装起来笛子了,笛子不吹了!");
	}
}

public class InterfaceTest
{
	public static void test(Sum a){
		System.out.println("这是实现了接口的符合的使用的情况!");
		a.tune();
		a.shake();
		a.cover();
	}

	public static void test_2(Sum_2 a){
		System.out.println("这是实现了接口的符合的使用的情况!");
		a.tune();
		a.shake();
		a.cover();
	}

	public static void main(String[] args){
		System.out.println("------------  1");
		System.out.println("这是接口的测试");

		Flute f = new Flute();
		f.tune();
		f.shake();
		f.cover();

		System.out.println("------------  2");

		test(new Flute());

		System.out.println("------------  3");
		//利用接口实现多重接口继承的情况;
		test_2(new Flute_2());
		//接口的实现,利用抽象类,实现多重接口的复用;
	}
}

希望能帮上大家!

小红旗-2015/4/28

时间: 2024-12-21 13:15:36

抽象类实现多个接口与接口的继承的对比,实现良好的设计模式!的相关文章

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

抽象类(abstract class)和 接口(interface)

PHP中的 抽象类(abstract class)和 接口(interface) 一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽象类不能被直接实例化.抽象类中只定义(或部分实现)子类需要的方法.子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化. 3 .如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法.如果子类

接口、接口优点、接口的属性和方法特性、接口与继承的区别、接口与抽象类的区别、匿名实现类、JDK1.8新特性、打印类名称

接口里的属性,必须是公共的/默认的&静态的&Final&初始化后的属性: 接口里所有方法都是抽象的. 接口和继承---先天有的用继承,后天学习的用接口: 接口特性-------- 1.接口不可以被实例化: 2.实现类必须实现接口中所有方法,否则实现类必须是抽象类 3.实现类可以实现多个接口,来弥补Java不能多继承: 4.接口中的变量都是静态常量:(静态的-可以通过类的名字点-直接调用:) ----------------------------------------------

java接口、接口、类、抽象类的区别

1.定义 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 2.Java接口与接口区别 Java接口,Java语言中存在的结构,有特定的语法和结构. package jiekou; public interface AreaInterface{ double pai=Math.PI; double area(); } 以上程序就是Java接口,是一个结构: 接口,一个类所

JavaSE8基础 抽象类实现只包含抽象方法的接口

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: //接口,使用接口的类 表明这个类可以实现该接口中的所有函数 //这个接口就相当于 证书似的,证明你有相应的能力! interface PersonTrain { //只要函数的声明,不要具体实现 public abstract void writeBook(); } //抽线类实现一个接口 abstract

在谈PHP中的 抽象类(abstract class)和 接口(interface)

一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽象类不能被直接实例化.抽象类中只定义(或部分实现)子类需要的方法.子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化. 3 .如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法.如果子类没有全部实现抽象类中的所有抽象方法,那么该子类也是一个抽象类,必须在 class 

什么是抽象类?什么是接口?接口和抽象类的区别在哪里?怎样去理解它们呢?

1.这里我们来参考一下博文. http://blog.csdn.net/fenglibing/article/details/2745123 接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么. 比如,男人,女人,这两个类(如果是类的话--),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把"吃东西"定义成一个接口,

(转)PHP中的 抽象类(abstract class)和 接口(interface)

转自:http://blog.csdn.net/sunlylorn/article/details/6124319 一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽象类不能被直接实例化.抽象类中只定义(或部分实现)子类需要的方法.子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化. 3 .如果子类需要实例化,前提是它实现

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力. 二者具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstractclass和Interface的选择显得比较随意.其实,两者之间还是有很大的区别的. 本文将对它们之间的区别进行剖析,并提供一个在二者之间进行选择的依据. 抽象类是什么? 本文中的抽象类表示的是一个抽象体,并非直接从abstract class翻译而

抽象类(abrstract class)与接口(interface)有何异同

抽象类:如果一个类中包含抽象方法(用abstract修饰的方法),那么这个类就是抽象类 接口:是指一个方法的集合,接口中的所有方法都没有方法体 相同点: 1)都不能被实例化 2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化 不同点: 1)接口只有定义,其方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类既可以有定义也可以有实现 2)接口需要实现(implements),抽象类只能被继承(extends).一个类可以实现多个接口,但只能继承一个抽象