抽象类和接口

一 抽象类
抽象:没有具体的解决方案,不能实例化,但是提供了一个规范。
抽象类:在class前加修饰符abstract的类。在抽象类中只做规定,不具体实现某种方法,而在其子类中实现这些方法。
例如对于水果来说,我们找不到一个具体的对象来表示它,因为苹果香蕉橘子都是水果,这时就可以将水果设置为抽象类,他不能实例化。

如果在一个类中有一个或多个抽象的方法,即方法有修饰符abstract,这个类就必须是抽象的。
使用抽象类时要注意的问题:1.如果在类中的方法都是非抽象的,这个类也可以声明为抽象的。
2.在抽象类中可以有非抽象的方法。
3.不能用抽象类直接创建对象,因为抽象类不具体,不能实例化。

抽象类:

public abstract class AbstractClass {
    public abstract void method1();   //抽象方法,抽象类的子类在类中必须实现
    public abstract void method2(); 
    public void method3(){//非抽象的方法
        System.out.println("------------------------");
    }
}

二 接口
接口是对象之间进行沟通的桥梁。它能为其他对象提供调用的规范,但是不公开实现。

接口是一种特殊的抽象类,接口中的所有的方法都是抽象的,不能有具体的实现,而是由另一个类来实现(implements)接口,重写其中的方法。
例如:对手机来说,只需要用他的比如听歌,照相等功能,而不用知道这些功能是如何实现的,就可以将这些功能设置为接口。

照相的接口:

public interface ITakePhoto {
    public void takePhoto();
}

听歌的接口

public interface IMusic {
    public void music();
}

手机类

//手机类,实现了照相和听歌的功能
public class Phone implements ITakePhoto,IMusic{
    //重写接口的方法
    @Override
    public void music() {
        // TODO Auto-generated method stub
        System.out.println("---I can listen music---");
    }
    @Override
    public void takePhoto() {
        // TODO Auto-generated method stub
        System.out.println("---I can takephoto---");
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Phone phone = new Phone();
        phone.takePhoto();
        phone.music();
    }
}

这样就给手机添加了功能。

implements和extends的区别:前者是实现接口,可以在一个类中实现多个接口,而且必须重写接口中的所有的方法。后者是继承类,一个子类只能继承一个父类,不能多继承,而且必须满足is a的关系,子类不用完全重写父类中的方法

阅读更多
想对作者说点什么? 我来说一句

C#抽象类接口方法

2009年04月13日 129KB 下载

JAVA:接口抽象类

2012年01月29日 181KB 下载

没有更多推荐了,返回首页

不良信息举报

抽象类和接口

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭