现在的位置: 首页 > 综合 > 正文

javaSE-面向对象-接口

2014年12月04日 ⁄ 综合 ⁄ 共 2168字 ⁄ 字号 评论关闭
格式:

    interface 接口名{}

接口中的成员修饰符是固定的。
成员常量:public static final
成员函数:public abstract
发现接口中的成员都是public的。
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。

接口的特点

l接口是对外暴露的规则
l接口是程序的功能扩展
l接口的出现降低耦合性
l接口可以用来多实现
l类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
l接口与接口之间可以有继承关系。

接口与抽象类

共  性:

都是不断抽取出来的抽象的概念

区别 1:

抽象类体现继承关系,一个类只能单继承

接口体现实现关系,一个类可以多实现

区别 2:

抽象类是继承,是 "is a "关系

接口是实现,是 "like a"关系

区别 3:

抽象类中可以定义非抽象方法,供子类直接使用

接口的方法都是抽象,接口中的成员都有固定修饰符

/*
如果一个抽象类的方法都是抽象的,
这时可以将抽象类用另一种形式来体现。就是接口。 
接口定义的关键字就是 interface 
*/

/*
abstract class AbsDemo
{
	abstract void show();
	abstract void method();
}

*/
interface InterDemo
{
	/*
	接口中成员的定义:
	常见成员有两种:
	1,全局常量。
	2,抽象方法。
	接口中的成员都是public的。

	接口:
		子类必须实现了接口中所有的抽象方法后,子类才可以实例化。
		否则,该子类是一个抽象类。
	*/

	public static final int X = 3;

	public abstract void method1();
	public abstract void method2();

}
class Demo implements/*实现*/ InterDemo
{
	public void method1()
	{
	}
	public void method2()
	{
	}
}



class  InterfaceDemo
{
	public static void main(String[] args) 
	{
		Demo d = new Demo();
		System.out.println(d.X);
		System.out.println(Demo.X);
		System.out.println(InterDemo.X);
	}
}
/*
接口的好处:是将多继承进行改良,用多实现进行体现。

一个类只能继承一个类,
但是一个类可以实现多个接口。


另一个体现。

一个类在继承另一个类的同时,还可以实现多接口。
接口的出现避免了单继承的局限性。



*/
interface DemoA
{
	public void show();

}

interface DemoB
{
	public void show();
}


class DemoC
{

}

class Demo extends DemoC implements DemoA,DemoB//多实现。
{
	public void show(){}

}


interface A
{
	void show();
}
interface B
{
	void show();
}
interface C extends B,A//接口之间存在着多继承。
{
}



class InterfaceDemo2 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}




/*
抽象类中没有抽象方法的举例。


*/
interface Inter
{
	public void method1();
	public void method2();
	public void method3();
}
//没有抽象方法的抽象类。
abstract class Test implements Inter
{
	public void method1()
	{
	}
	public void method2()
	{
	}
	public void method3()
	{
	}
}
class Test1 extends Test
{
	public void method1()
	{
		System.out.println("test1,method1 run);
	}
}

class Test2 extends Test
{
	public void method2()
	{
		System.out.println("test2,method2 run);
	}
}

/*
class Test1 implements Inter
{
	public void method1()
	{
		System.out.println("test1,method1 run);
	}
	public void method2()
	{
	}
	public void method3()
	{
	}
}


class Test2 implements Inter
{
	public void method1()
	{
		
	}
	public void method2()
	{
		System.out.println("test2,method2 run);
	}
	public void method3()
	{
	}
}
*/














interface A{void show1();
void show2(); 
}
interface B{void show ();}
interface C extends A,B{
	
}
abstract class D implements A{

	@Override
	public void show2() {
		
	}

	@Override
	public void show1() {
		// TODO Auto-generated method stub
	}
	
}

抱歉!评论已关闭.