#extends implements interface区别

接口:implements及其基本应用

interface implements 暴露的规则参考


interface implements 参考网址

interface USB//暴露的规则
{
	public abstract void open();//开启
	public abstract void close();//关闭
}
class Mouse implements USB//实现规则
{
	public void open()
	{
		System.out.println("Mouse open");
	}
	public void close()
	{
		System.out.println("Mouse close");
	}
}
class Upan implements USB
{
	public void open()
	{
		System.out.println("Upan open");
	}
	public void close()
	{
		System.out.println("Upan close");
	}
}
//这些设备和电脑的耦合性就降低了
public class Main 
{
	public static void main(String[] args)
	{
		UseUsb(new Upan());//功能扩展
		UseUsb(new Mouse());
	}
	//使用规则
	public static void UseUsb(USB a)//接口型引用,用于接受接口的子类的对象
	{
		a.open();
		a.close();
	}
}

测试接口是否实现

1. 使用instanceof 关键字,instanceof是Java的一个二元操作符,是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,也可以测试接口。
public class Test
{
    	public static void main(String[] args)
    	{
    	    	Student student = new Student();
    	    	System.out.println(student instanceof Person);
    	}
}
class Student implements Person
{
}
interface Person
{
}
2. Class[] getInterfaces()得到的数组中,接口对象顺序和这个对象所表示的类中implements子句中接口名的顺序,是一致的。


public class Demo3 {
    public static void main(String[] args) {
        Class<?> c = Dog.class;//得到Dog对应的Class对象
        Class<?> interfaces[] = c.getInterfaces();//获得Dog所实现的所有接口
        for (Class<?> inte : interfaces) {//打印
            System.out.println("Dog实现接口:"+inte);
        }
    }
}

extends


extends 参考网址

JAVA的extends用法

class Animal{  
    void eat(){  
        System.out.println("Animal eat");  
    }  
    void sleep(){  
        System.out.println("Animal sleep");  
    }  
    void breathe(){  
        System.out.println("Animal breathe");  
    }  
}  
  
class Fish extends Animal{  
	//覆盖用法
    void breathe(){  
        System.out.println("Fish breathe");  
    }  
}  
  
public class TestNew {  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        Animal an = new Animal();  
        Fish fn = new Fish();  
          
        an.breathe();  
        fn.breathe();  
    }
}  
结果
Animal breathe
Fish breathe


jdk1.5中@Override只适用于类的继承,而不适用于接口的实现;而jdk1.6中的@Override既支持实现又支持继承。