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语言与payth_java 语言程度设计 李元朝 第8章 接口和包 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729056876a1184068.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论