您的位置:首页 > 其它

抽象类和接口

2016-05-30 20:10 232 查看
一 抽象类

抽象:没有具体的解决方案,不能实例化,但是提供了一个规范。

抽象类:在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的关系,子类不用完全重写父类中的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: