您的位置:首页 > 编程语言 > Java开发

Java中接口interface和实现implements问题

2012-12-05 17:21 405 查看
接口体中之宝含常量定义和方法声明两部分,并且默认都为public
接口实现为类定义,如果该类没有全部实现了接口的所有函数,则此类必须为abstract类,不能实例化对象
经过验证还发现,类似于继承,接口实现中也存在类中新添加的成员变量对接口的同名覆盖,将会加以证明。

形式:
interface Name
{
public final DataType data1 = 常数1;
......
public final DataType datan = 常数n;

public ReturnType FuncName1(Paras....);
......
public ReturnType FuncNamen(Paras....);
}

class One implements Name
{
//实现所有方法
//codes
}

abstract Two implements Name //不可实例化对象
{
//至少有一个方法没实现
//codes
}

eg.
//桌面 interface1 2 3

//接口,只含常量和函数声明
interface Charge
{
public final int max = 10; //如果不加访问修饰符,默认为public

public void Pay();
public int Func();
}

//实现接口
class Car implements Charge
{
protected int min;
protected int max; //和interface常量中同名的变量

public Car(int min, int max)
{
this.min = min; //成员
this.max = max; //经证明会发生同名覆盖
}

//实现接口中函数1
public void Pay()
{
System.out.println("class Car" + " " + max);
}

//实现接口中函数2
public int Func()
{
//codes
return -1;
}

//新增函数
public void Show()
{
//该max为本类中的max,因为覆盖了接口中的max
System.out.println("min = " + min + " max = " + max );
}
}

class Bus implements Charge
{
public void Pay()
{
System.out.println("class Bus");
}

public int Func()
{
return 0;
}

//新增函数
public void Show()
{
System.out.println("max = " + max );//该max为interface中常量max
}
}

//该类只实现了接口两个函数中的其中一个,因此该类为abstract类,不能实例化对象
abstract class Taxi implements Charge
{
public void Pay()
{
System.out.println("class Taxi");
}

//新增函数,由于本类为抽象类,所以无法实例化对象,也就无法调用次函数
public void Show()
{
System.out.println("max = " + max );
}
}

public class Sixth
{
public static void main(String args[])
{
Car car = new Car(100, 200);
car.Pay();
car.Show();

Bus bus = new Bus();
bus.Pay();
bus.Show();

//不能用Taxi类实例化对象
}
}

运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐