java接口

来源:互联网 发布:软件研发的特点 编辑:程序博客网 时间:2024/06/05 03:04

接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法

抽象类

我们创建抽象类是希望通过这个通用的接口操纵一系列类。
包含抽象方法的类叫抽象类,并且只要包含一个或一个以上,该类必须限定为抽象的。
抽象方法的语法:
abstract void f();

使用抽象类时需要注意几点:
1、抽象类创建对象不安全。
2、若果继承抽象类并创建新的子类,就必须实现抽象中的所有抽象方法,否则该子类仍是抽象类。

实例:

abstract class Shape {    abstract void draw();    abstract void erase();}public class Circle extends Shape {    public void draw() {        System.out.println("Circle draw()");    }    public void erase() {        System.out.println("Circle erase()");    }}public class Triangle extends Shape {    public void draw() {        System.out.println("Triangle draw()");    }    public void erase() {        System.out.println("Triangle erase()");    }}public class Square extends Shape {    public void draw() {        System.out.println("Square draw()");    }    public void erase() {        System.out.println("Square erase()");    }}public class RandomShapeGenerate {    private Random rand = new Random(47);    public Shape next() {        switch (rand.nextInt(3)) {        default:        case 0:            return new Circle();        case 1:            return new Square();        case 2:            return new Triangle();        }    }}public class Shapes {    private static RandomShapeGenerate gen = new RandomShapeGenerate();    public static void main(String[] args) {        Shape[] s = new Shape[9];        for (int i = 0; i < s.length; i++) {            s[i] = gen.next();        }        for (Shape shp : s) {            shp.draw();        }    }}

这段代码其实和上一篇文章java之多态中的实例代码一样,除了父类的方法以及本身变成抽象的。
我看来抽象是对多态的优化,因为最终的目的是为了更好的重构。

接口
1、 interface关键字使抽象类的概念更向前迈进一步,即接口是一个完全抽象类,它根本没有提供任何形式的具体实现。它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。
2、 interface 不仅仅是抽象类,它允许我们通过创建一个能够被向上转型为多种基本类的类型,来实现某种意义上的多重继承(extends 不允许多重继承)。
3、接口也可以包含域,但是这些域都隐式的是static和final的。
4、当某个类要实现特定的一个或多个接口时,要使用implements关键字。
5、接口中的方法默认是public的,否则方法在被继承的过程中,访问权限被降低为包访问权限。

0 0