[接口修饰符] interface接口名称[extends父接口名]{
..//方法的原型声明或静态常量
接口的数据成员一定要有初值,且此值将不能再更改,可以省略
final关键字。
接口中的方法必须是“抽象方法” ,不能有方法体,可以省略
public及abstract关键字。
声明一个接口Shape2D ,包括π和计算面积的方法原型
interface Shape2D{ //声明Shape2D接口
final double pi=3.14;//数据成员-定要初始化
public abstract double area(); //抽象方法
}
在接口的声明中,允许省略一些关键字 ,也可声明如下
interface Shape2D{
double pi=3.14;
double area();
}
实现接口
利用接口设计类的过程,称为接口的实现,使用implementspublic class类名称implements接口名称{
//在类体中实现接口的方法
//本类声明的更多变量和方法
}
注意:
必须实现接口中的所有方法 ;
来自接口的方法必须声明成public。
Circle实现Shape2D接口
public class Circle implements Shape2D {
double radius;
public Circle(double r) {
radius=r;
}
public double area(){
return (pi * radius * radius);
}
}
Rectangle类实现Shape2D接口
class Rectangle implements Shape2D {
int width,height;
public Rectangle(int w,int h) {
width=w;
height=h;
}
public double area(){
return (width * height);
}
}
接口测试类
public class InterfaceTester {
public static void main(String args[]){
Rectangle rect=new Rectangle(5,6);
System.out.println("Area of rect="+ rect.area());
Circle cir=new Circle(2.0);
System.out.println("Area ofcir= " + cir.area());
}
}
运行结果
如果在声明时将两个变量声明为Shape2D
类型,在使用时将会自动转换。
public class InterfaceTester {
public static void main(String args[]){
Shape2D rect, cir;
rect=new Rectangle(5,6);
System.out.println("Area of rect="+ rect.area());
cir=new Circle(2.0);
System.out.println("Area ofcir= " + cir.area());
}
}
运行结果:
[类修饰符] class类名称implements 接口1,接口2, ...{
}
声明Circle类实现接口Shape2D和Color
Shape2D具有常量pi与area()方法,用来计算面积;
Color则具有setColor方法,可用来赋值颜色;
通过实现这两个接口,Circle类得以同时拥有这两个接口的成员,达到了对设计进行多重继承的目的。
interface Shape2D{ //声明Shape2D接口
final double pi=3.14;
//数据成员一定要初始化
public abstract double area(); //抽象方法
}
interface Color{
void setColor(String str); //抽象方法
}
实现多接口
public class Circle implements Shape2D,Color {
double radius;
String color;
public Circle(double r) {
radius=r;
}
public double area(){
return (pi * radius * radius);
}
public void setColor(String str){//定义setColor()的处理方式
color=str;
System.out.println("color=" +color);
}
}
测试类:
public class InterfaceTester {
public static void main(String args[]){
Circle cir;
cir=new Circle(2.0);
cir.setColor("blue");
System.out.println("Area of cir= " + cir.area());
}
}
运行结果:
interface子接口的名称extends超口的名称1 ,超接口的名称2,..{
}
类型转换
类型转换的概念
又称为塑型(type-casting)。
转换方式
隐式的类型转换;
显式的类型转换。
转换方向
向上转型;
向下转型,
类型转换规则
基本类型之间的转换
将值从一种类型转换成另-种类型。
引用变量的类型转换
将引用转换为另一类型的引用,并不改变对象本身的类型。
只能被转为
任何一个(直接或间接)超类的类型(向上转型);
对象所属的类(或其超类)实现的一一个接口(向上转型) ;
被转为引用指向的对象的类型(唯一可以向 下转型的情况)。
当一个引用被转为其超类引用后,通过他能够访问的只有在超类中声Employee emp;
emp = new Manager(); //将Manager类型的对象直接赋给
//Employee类的引用变量,系统会
//自动将Manage对象塑型为Employee类
被塑型为对象所属类实现的接口类型,例如:
Car jetta = new Car();
Insurable item = jetta;
显式类型转换
基本数据类型
(int)871.34354;// 结果为871
(char)65;//结果为'A'
(long)453;//结果为453L
引用变量
Employee emp;
Manager man;
emp = new Manager();
man = (Manager)emp; //将emp显式转换为它指向的对象的类型
类型转换的主要应用场合
赋值转换
方法调用转换
算术表达式转换
字符串转换
类型转换的主要应用场合
赋值转换