Java思想之什么是面向接口?interface实现(计算三角形、圆形的面积)

本次讲解面向接口interface,其内功能为计算三角形和圆形的面积。

接口的本身反映了系统设计人员对系统的抽象理解。
接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);
第二类是对一个体某一方面的抽象,即形成一个抽象面(interface);
一个体有可能有多个抽象面。
抽象体与抽象面是有区别的。

 

接口,英文称作interface,泛指供别人调用的方法或者函数,它是对行为的抽象。

在Java中,定义一个接口的形式如下:

	public interface InterfaceName {
        int a;

        public void f();
}

 

 

 

 

1. 接口中可以含有 变量和方法

2.接口中的变量会被隐式地指定为public static final变量(且只能是public static final变量),方法会被隐式地指定为public abstract方法且只能是public abstract方法(且只能是public abstract 方法),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。

 

2. 实现接口

让某一个类实现接口需要使用implements关键字,如:

class ClassName implements Interface1,Interface2,[....]{
}

 

================================================================================================================================

 

 

在以下完整测试中

我们会使用到四个类

1.Pillar

 

2. Geometry(接口)

 

3.Lader

 

4.Circle

 

5.Example5_14测试类

 

================================================================================================================================

 

我们来看一看代码实现

 

//柱体Pillar类

package com.ash.www;

public class Pillar{

	Geometry bottom;	//将bottom接口变量作为成员
	double height;
	Pillar(Geometry bottom, double height){
		this.bottom = bottom;
		this.height = height;
	}
	
	void changeBottom(Geometry bottom){
		this.bottom = bottom;
	}

	public double getVolume() {
		return bottom.getArea() * height;
	}

}

 

//几何Geometry类(接口类)

package com.ash.www;

public interface Geometry {	//接口
	public double getArea();	//得到面积

	
}

 

//梯形Lader类

package com.ash.www;

public class Lader implements Geometry {

	double a, b, h;
	Lader(double a, double b, double h){
		this.a = a;
		this.b = b;
		this.h = h;
	}
	
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return (1/2.0) * (a+b) * h;
	}

}

 

//圆形Circle类

package com.ash.www;

public class Circle implements Geometry {
	double r;
	Circle(double r){
		this.r = r;
	}
	
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return (3.14 * r * r);
	}

}

 

//Example5_14测试类

package com.ash.www;

public class Example5_14 {	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Pillar pillar;
		Geometry tuxing;
		
		tuxing = new Lader(12, 22, 100);
		System.out.println("Lader area: "+ tuxing.getArea());
		
		pillar = new Pillar(tuxing, 58);
		System.out.println("Ladered pillar volume: "+ pillar.getVolume());

		
		tuxing = new Circle(10);
		System.out.println("When the cicle radius is 10, the circle area: "+ tuxing.getArea());
		
		pillar.changeBottom(tuxing);
		System.out.println("Circled pillar volume: "+ pillar.getVolume());
	}
}

 

 

 

看完这篇文章,你是否对面向接口interface又有了更深的了解呢?
 

 

 

你可能感兴趣的:(Java基础学习)