interface
接口:初期理解,可以认为是一个特殊的抽象类。
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表示。
作用:功能扩展!
class 用于定义类
接口定义时,格式特点:
1接口中常见定义:常量,抽象方法;
2接口中的成员都是有固定修饰符。
常量:public static final
方法:public abstract
记住:接口中的成员都是public的。
接口是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象发放全部都覆盖后,子类才可以实例化。
否则子类是个抽象类。
interface Inter
{
public static final int NUM=3;
public abstract void show();
}
class Test implements Inter
{
public void show(){}
}
class InterfaceDemo
{
public static void main (String []args)
{
Test t =new Test();
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);
// X t.Num = 4 错误,NUM是常量,不能赋值!
}
}
接口可以被类多实现
是对多继承不支持的转换形式,java支持多实现。(一个类可以同时实现多个接口)
多继承(接口与接口的情况下)
java不支持多继承,但是在接口与接口的情况下,支持多继承!
在类中,以多实现的方法体现出来。
继承 和 接口在多继承上的差异原因
继承:没有多继承,因为父类中肯能存在同名的多个方法,会导致子类调用的不确定。
接口:有多继承,因为父类方法中,没有方法体,只有方法定义,所以重复没有关系。
interface A
{
void methodA();
}
interface B
{
void methodB();
}
interface C extends B,A //接口与接口情况下的 多继承
{
void methodC();
}
class D implements C //多实现方法体现
{
public void methodA(){};
public void methodB(){};
public void methodC(){};
}
implements 实现
interface A
{
public void show();
}
interface Z
{
public int add(int a,int b);
}
class Test implements A,Z//多实现
{
public int add(int a,int b)
{
return a+b+3;
}
/**/
public void show(){}
}
抽象类和接口的异同点:
相同点:
都是不断向上抽取而来的。
不同点:
1,抽象类需要被继承,而且只能单继承。
接口需要被实现,而且可以多实现。
2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
接口中只能定义抽象方法,必须由子类去实现。
3,抽象类的继承,是is a关系,在定义该体系的基本共性内容。
接口的实现是 like a 关系,在定义体系额外功能。
abstract class Student
{
abstract void study();
void sleep()
{
System.out.println("sleep");
}
}
interface Smoking
{
void smoke();
}
class ZhangSan extends Student implements Smoking
{
void study(){}
public void smoke(){}
}
class Lisi extends Student
{
}
class
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
abstract class Sporter
{
abstract void paly();
}
interface study
{
}
class WangWu extends Sporter implements study
{
public void play(){}
}
class demo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}