1.接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class用于定义类,
interface 用于定义接口。
接口在定义时,格式特点:
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(){}
}
public class aaaa {
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);//接口名调用成员
//有一个动作不能做,就是不能t.Num=4; 就是不能对Num赋值。因为是个常量。
}
}
接口:可以被类多实现。就是一个类可以实现多个接口,也是对多继承不支持的转换形式
没有方法体,可以由子类任意定义。
下面的就是多少实现:
interface Inter{
public static final int Num=3;
public abstract void show();
}
interface InterA{
public abstract void method();
}
class Test implements Inter{
public void show(){}
public void method(){}
}
public class aaaa {
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);//接口名调用成员
//有一个动作不能做,就是不能t.Num=4; 就是不能对Num赋值。因为是个常量。
}
}
一个类在继承一个类的同时还可以实现多个接口:
interface Inter{
public static final int Num=3;
public abstract void show();
}
interface InterA{
public abstract void method();
}
class Demo{
public void function(){}
}
class Test extends Demo implements Inter{
public void show(){}
public void method(){}
}
public class aaaa {
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);//接口名调用成员
//有一个动作不能做,就是不能t.Num=4; 就是不能对Num赋值。因为是个常量。
}
}
类与类之间是继承关系,类与接口之间是实现关系,接口与接口之间是继承关系。
接口之间存在多继承:
interface A{
void methodA();
}
interface B extends A{
void methodB();
}
interface C extends B,A
{
void methodC();
}
class D implements C
{
public void methodA(){}
public void methodC(){}
public void methodB(){}
}
接口的特点:
1.接口是对外暴露的规则。
2.接口是程序的功能扩展。
3.接口可以用来多实现。
4.类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
5.接口与接口之间可以有继承关系。
接口的举例实现:
abstract class Student{
abstract void study();
void sleep(){
System.out.println("sleep");
}
void smoke()
{
System.out.println("smoke");
}
}
class ZhangSan extends Student
{
void study(){}
}
public class aaaa {
public static void main(String [] args)
{
System.out.println("hello");
}
}
抽smoke不是student必须要具备的行为,只是部分students具备的行为,所以,应该用以下实现:
单独出来,作为一个扩展功能:
zhangsan是student中的成员,在Smoking这个体系中,并扩展了自己的功能。
abstract class Student{
abstract void study();
void sleep(){
System.out.println("sleep");
}
}
interface Smokeing{
void smoke();
}
class ZhangSan extends Student implements Smokeing
{
void study(){}
public void smoke(){}
}
public class aaaa {
public static void main(String [] args)
{
System.out.println("hello");
}
}