extends implements interface区别
#extends implements interface区别
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 参考网址
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既支持实现又支持继承。