先看这段代码
class cam0
{
public void print()
{
System.out.println("aaa");
}
}
class cam1 extends cam0
{
public void print()
{
System.out.println("bbb");
}
}
public class cam2
{
static public void main(String args[])
{
cam0 a;
a=new cam1();
a.print();
}
}
很显然,输出为bbb,执行的是子类的成员函数,此时父类的成员函数没有用处,父类的cam0也可以这样写
abstract class cam0
{
public abstract void print();
}
即cam0类没有实例,且print函数没有函数体
这就相当于接口
接口的定义如下
[修饰符]interface[extends]
{
数据成员; //默认为public static final
成员函数; //默认为public abstract
}
注意:接口可实现多重继承
接口的实现如下
[访问修饰符]class 类名 implements[接口列表]
{
public 成员函数;
}
注意:类实现接口,它必须实现接口中所有的方法
上例的代码写为接口的形式如下
interface cam0
{
void print();
}
class cam1 implements cam0
{
public void print()
{
System.out.println("aaa");
}
}
public class cam2
{
static public void main(String args[])
{
cam0 a=new cam1();
a.print();
}
}
接口的多重继承可以让一个接口去继承多个接口, 再用一个类来实现接口,也可以让一个类去继承多个接口
如下例
interface a
{
void aa();
}
interface b
{
void bb();
}
interface c extends a,b
{
}
class cam1 implements c
{
public void aa()
{
System.out.println("aa");
}
public void bb()
{
System.out.println("bb");
}
}
public class cam2
{
static public void main(String args[])
{
cam1 a=new cam1();
a.aa();
a.bb();
}
}
输出为aa,bb,接口c继承了接口a,b
换一个种写法, 让一个类去继承多个接口
interface a
{
void aa();
}
interface b
{
void bb();
}
class cam1 implements a,b
{
public void aa()
{
System.out.println("aa");
}
public void bb()
{
System.out.println("bb");
}
}
public class cam2
{
static public void main(String args[])
{
cam1 a=new cam1();
a.aa();
a.bb();
}
}
输出为aa,bb,类cam1继承了接口a,b