关闭

抽象类和接口

71人阅读 评论(0) 收藏 举报

一 抽象类
抽象:没有具体的解决方案,不能实例化,但是提供了一个规范。
抽象类:在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的关系,子类不用完全重写父类中的方法

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3489次
    • 积分:358
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类