admin管理员组

文章数量:1630583

以下是一个接口声明:

public interface Shape1

{

public static final PI=3.14159;

public abstract double area();

public abstract double volume( double x);

public abstract void show();

}

8.2.2 实现接口

class 类名 [extends 父类名] implements 接口名列表

{

类体

}

说明:1) 一个类可以实现多个接口。

2) 实现接口的类必须要实现接口中所有的抽象方法。

接口具有如下特点:

1)接口与类比较具有特殊发兵 。接口可以多重继承,可以通过使用extends后面的父类接口来定义。

2)接口允许没有父接口,即接口不存在最高层。

3)接口的方法只能被声明为public,abstract,

4)接口中的方法都使用abstract修饰的方法。

例 8-2 实现接口举例。

public interface Shape1 {

public static final double PI=3.14159;

public abstract double area();                //计算图形面积

public abstract double volume( double x);      //计算图形体积

public abstract void show_height();           //显示图形高度

}

public class Circle1 implements Shape1{

double radius;

public Circle1(double r)

{

radius =r;

}

public double area()

{ return PI*radius*radius;}

public double volume( double x)

{return 0;}

public void show_height()

{}

public static void main(String args[])

{

Circle1 circle=new Circle1(3);

System.out.println("Radius="+circle.radius+

"  Area="+circle.area());

}

}

Radius=3.0  Area=28.274309999999996

接口与抽象的异同

相同点:

1)都包含抽象方法,声明多个类共用方法的返回值和参数表

2 )都不能实例化

3)都是引用数据类型。

不同点:

1)   一个类只能继承一个抽象类,是单重继承;一个类可以实现多个接口,具有多重继承功能。

2)抽象类及成员具有与普通类一样的访问权限。接口的访问权限有public和默认权限,

3)抽象类可以声明成员变量,成员变量的值 可以被更改;接口中只能声明常量。

4)抽象类中可以声明抽象方法、普通成员方法及构造方法;接口中只能声明抽象方法。

例8-3 利用接口代替抽象类实现例8-1的功能。

public interface Book {

abstract  void  show_kind();           //定义抽象方法,显示图书种类

abstract  double  getPrice(int bookPage,float discount);

}

public class Science_book implements Book{

int  bookPage;               //图书页码

float  discount;             //图书折扣

double  price;

public Science_book(int bookPage,float discount)

{

this.bookPage=bookPage;

this.discount=discount;

}

public void show_kind()

{

System.out.println("The book's kind is science");

}

public double  getPrice(int bookPage,float discount)

{

return bookPage*0.1*discount;

}

public void show_price()        //显示价格

{

System.out.println("This book's price is "+price);

}

}

public class Literature_book implements Book{

int  bookPage;                   //图书页码

float  discount;                 //图书折扣

double  price;

public Literature_book(int bookPage,float discount)

{

this.bookPage=bookPage;

this.discount=discount;

}

public void show_kind()

{

System.out.println("The book's kind is literature");

}

public double  getPrice(int bookPage,float discount){

return bookPage*0.08*discount;

}

public void show_price(){    //显示价格

System.out.println("This book's price is "+price);

}

}

public class Teaching_book implements Book{

int  bookPage;               //图书页码

float  discount;             //图书折扣

double  price;

public Teaching_book(int bookPage,float discount)

{

this.bookPage=bookPage;

this.discount=discount;

}

public void show_kind()

{

System.out.println("The book's kind is teaching's book");

}

public double  getPrice(int bookPage,float discount){

return bookPage*0.05*discount;

}

public void show_price(){    //显示价格

System.out.println("This book's price is "+price);

}

}

public class Show1 {

public static void main(String args[])

{

Science_book bb=new Science_book(530,0.7f);      //创建科技书对象

bb.price=(int)bb.getPrice(530,0.7f);                 //引用科技书类方法

bb.show_kind();

bb.show_price();                                         //引用父类方法

Literature_book ll=new Literature_book(530,0.7f);

ll.price=(int)ll.getPrice(530,0.7f);

ll.show_kind();

ll.show_price();

Teaching_book tt=new Teaching_book(530,0.7f);

tt.price=(int)tt.getPrice(530,0.7f);

tt.show_kind();

tt.show_price();

}

}

例8-4 实现接口并继承类举例

本文标签: 语言接口程度李元Java