抽象类和接口

1.接口是公开的,里面不能有私有的方法或者变量,是用于让别人使用的,而抽象类是可以有私有的方法或者私有变量的。
2.实现接口的一定要实现接口里面定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般应用里最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
3.接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。
4.抽象类中可以有非抽象方法(实现了的方法包括构造函数),接口方法都是抽象方法。abstract
5.抽象类可以继承接口,而接口不能继承抽象类。
因为Java只允许单继承,所以抽象类作为类型定义受到了极大的限制,但是一个类可以实现多个接口。
6.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
7.抽象类不能被实例化。

例子:

抽象方法只需声明,而不需实现某些功能。如:
public abstract void enjoy();
上面的这个抽象方法不需要实现功能,而一般的方法 :
public void enjoy() {
System.out.print("叫声"); //有必要实现某些功能
}

例子 :多态程序,没抽象类的
class Person {
public void f() {
System.out.println("父类");
}
}

class Students extends Person {
public void f() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教师类");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}

抽象类的多态程序:
abstract class Person {
public abstract void f();
}

class Students extends Person {
public void f() {
System.out.println("学生类");
}
}
class Teacher extends Person {
public void f() {
System.out.println("教师类");
}
}
public class Test3 {
public static void main(String[] args) {
Person s = new Students();
Person t = new Teacher();
s.f();
t.f();
}
}

什么时候使用抽象类和接口

如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

//报错原因:抽象类不能进行实例化操作
//Animal Tiger = new Animal();

    //只能用子类进行实例化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 本文参与#漫步青春#征文活动,作者姜悦,本人承诺,文章内容为原创且未在其他平台发布过 驻足青春, 青春是一树花开不...
    枕头_8801阅读 340评论 0 0
  • 他乡夜深之至, 店铺灯火通明。 晓知晚有来客, 更深渐显倦容。 无人问津何故, 只道饱腹远行。 挥手别客道珍重, ...
    衣饰忆流年阅读 330评论 7 3
  • 03103 黄惠娟 幸福到底是什么? 有一些话,是父母必须对孩子说的,为了使他们健康地成长,将来能够靠...
    儒清雅阅读 269评论 2 1