/*
接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class用于定义类
interface用于定义接口。
接口定义时,格式特点:
1,接口中常见定义:常量,抽象方法。
2,接口中的成员都有固定修饰符。
常量:public static
方法:public abstract
记住:接口中的成员都是public的。
接口:是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。
否则子类是一个抽象类。
类与接口之间是实现关系,类与类之间是继承关系,接口与接口之间是继承关系。
接口可以被类多实现。一个类可以实现多个接口。也是对多继承不支持的转换形式。
*/
interface Inter //interface是class文件的一种特殊形式,编译时也生成class文件,加载到运行中。
{ //为了增加阅读性,不要省略。
public static final int NUM = 3;//省略了public static final,注意常量大写。
public abstract void show();//省略了public abstract ,观察没有方法体所以接口可以多实现,也就是多继承。
}
interface InterA
{
public abstract void method();
}
class Demo
{
public void function(){}
}
/*
class Test extends Demo implements Inter,InterA
{
public void show(){}
}
*/
interface A
{
}
interface B //extends A
{
void methodB();
}
interface C extends B ,A
{
void methodC();
}
class D implements C
{
public void methodA(){};//想要实现接口,必须加public
public void methodB(){};
public void methodC(){};
}
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);//类调用成员。因为Test已经实现了Inter,相当于里面已经有了NUM.
System.out.println(Inter.NUM);//这样写也可以,因为编译后有三个class文件。加载时静态NUM已经存在。
//以上三者中的任何一个,都不能这样做:t.NUM = 4;
}
}
/*编译是不会通过的,因为没有方法体.可以改成void show(){};或者如下变成抽象。
class Demo
{
void show();
}
*/
/*
abstract class Demo
{
abstract void show();
}
*/
接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
class用于定义类
interface用于定义接口。
接口定义时,格式特点:
1,接口中常见定义:常量,抽象方法。
2,接口中的成员都有固定修饰符。
常量:public static
方法:public abstract
记住:接口中的成员都是public的。
接口:是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。
否则子类是一个抽象类。
类与接口之间是实现关系,类与类之间是继承关系,接口与接口之间是继承关系。
接口可以被类多实现。一个类可以实现多个接口。也是对多继承不支持的转换形式。
*/
interface Inter //interface是class文件的一种特殊形式,编译时也生成class文件,加载到运行中。
{ //为了增加阅读性,不要省略。
public static final int NUM = 3;//省略了public static final,注意常量大写。
public abstract void show();//省略了public abstract ,观察没有方法体所以接口可以多实现,也就是多继承。
}
interface InterA
{
public abstract void method();
}
class Demo
{
public void function(){}
}
/*
class Test extends Demo implements Inter,InterA
{
public void show(){}
}
*/
interface A
{
}
interface B //extends A
{
void methodB();
}
interface C extends B ,A
{
void methodC();
}
class D implements C
{
public void methodA(){};//想要实现接口,必须加public
public void methodB(){};
public void methodC(){};
}
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);//类调用成员。因为Test已经实现了Inter,相当于里面已经有了NUM.
System.out.println(Inter.NUM);//这样写也可以,因为编译后有三个class文件。加载时静态NUM已经存在。
//以上三者中的任何一个,都不能这样做:t.NUM = 4;
}
}
/*编译是不会通过的,因为没有方法体.可以改成void show(){};或者如下变成抽象。
class Demo
{
void show();
}
*/
/*
abstract class Demo
{
abstract void show();
}
*/