Java基础:抽象类和接口

一、引言

基于面向对象五大原则中的下面两个原则,我们应该多考虑使用接口和抽象类:

里氏替换原则:子类可以通过实现父类接口来替换父类,所以父类应尽可能实现为接口/抽象类,方便拓展程序而不影响现有代码。

依赖倒置原则:和结构化设计不同,我们要让底层依赖于高层,而不是相反。

而设计接口和抽象类时尽量遵循面向对象五大原则中的“接口隔离原则”,即使用专门接口比使用单一接口好。这个准则和针对类设计的“单一职责原则”对应。

备注:设计模式中有很多和接口和抽象类相关的模式,比如抽象工厂、模板方法等。

二、概念

抽象类(AbstractClass)

(1)抽象类提供通用结构,并阻止用户对其进行实例化;

(2)虽然抽象类不能被实例化,但是其仍然有构造函数。------
为什么???

(3)如果你继承自一个抽象类,那么你只有两种选择:实现基类中所有抽象方法;声明自己为抽象类;

(4)如果你想让所有导出类复写或者实现某个方法,那么你就可以将其声明为abstract强制导出类实现它。

(5)java不允许类的多重继承,但是可以实现多个接口。
接口可以多重继承。

接口(Interface)

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

(2)接口是一个完全抽象的类,没有提供任何具体的实现;

(3)接口变量:隐含是public
static

final
的,
即是一个完全的常量,初始化后便无法改变,在内存中只有一份;

(4)接口方法:默认是
public
的;而普通类的方法(包括)构造器默认是包访问权限的(protected)。

(5)接口本身:默认是包访问权限protected的(继承访问权限);但是只能用public
& abstract
来修饰一个接口。

(6)多重继承:与类不一样,接口允许多重继承,一个接口可以同时继承多个接口。

(7)接口本身只能被声明为public& abstract和,其他修饰符(private,
protected, static,final, transient& volatile)都是不允许的。

时间: 2024-11-06 12:27:55

Java基础:抽象类和接口的相关文章

详解java基础--抽象类、接口与多态

抽象类.接口.多态都是面向对象中很基础的东西,我相信看到能本篇博客的人本不会再纠结它的基本定义了,本篇文章将尽量的更加深层次的挖掘其内涵,希望能对大家有帮助. 一.抽象类 1.形式 1 abstract class Ceshi 2 { 3 abstract void show(); 4 } 5 class DemoA extends Ceshi 6 { 7 void show() 8 { 9 System.out.print("Hello world"); 10 } 11 } 2.特点

Java基础-抽象类和接口

抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 抽象定义: 抽象就是从多个事物中将共性的,本质的内容抽取出来.     例如:狼和狗共性都是犬科,犬科就是抽象出来的概念. 抽象类: Java中可以定义没有方法体的方法,该方法的具体实现由子类完 成,该方法称为抽象方法,包含抽象方法的类就是抽象类. 抽象方法的由来: 多个对象都具备相同的功能,但是功能具体内容有所不

Java基础——抽象类和接口的关系

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都能用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就应该被定义为抽象类. 抽象类 概述 比如,我们要描述"动物",它具有年龄.体积,会叫,能跑.但是又缺乏足够的特性(相较于阿猫,阿狗,它们都是动物,却有自己的特性),我们没有唯一的一种能够代表动物的东西(当然,这是相对于猫.狗来说的,在生物学上,动物还是有办法来定义的),这时我们可以用抽象类来描述它.当我们用某个类来具体描述&quo

黑马程序员----java基础---抽象类和接口,附相关面试题

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一:抽象类(掌握) (1)把多个共性的东西提取到一个类中,这是继承的做法. 但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体. 也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样. 所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体. 而一个没有具体的方法体的方法是抽象的方法. 在一个类中如果有抽象方法,该类必须定义为抽象类. (2)抽象类的特点 A:

java基础-抽象类与接口(转)

抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类       我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal(),我们都知道这个是产生一个动物Animal对象,但

黑马程序员-java基础-抽象类和接口

1,抽象类中可以有构造方法,主要是当实例化子类时,进行初始化. 2,抽象类中可以没有任何抽象方法 意义在于不让外界创建对象. 3,抽象类和关键字的共存问题 private abstratc method();  // 要重写,但又不支持重写 final abstract method();   //final 是让子类不重写 static abstract method(); // 方法属于类,必须实现 1,抽象类可以实现接口 其中的方法可以实现,也可以不实现. 2.成员特点 成员变量(接口中很

Java基础--抽象类与接口

抽象类: /** * 抽象类,对类的抽象描述,包括属性.方法的抽象描述 * @author 尘世间迷茫的小书童 * */ public abstract class Myabstract { /** * 抽象类属性想要被子类继承,修饰符不能为private */ public String name; public String sex; public int age; /** * 抽象类中的方法可以有选择的实现 */ public void testDo() { } public void t

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

java基础学习总结——接口

java基础学习总结——接口 一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承.这样金丝猴可以同时从 “动物类”.“值钱的东西类”.“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因此金丝猴只能从这三个类中的一个来继承,不能同时继承这三个类.因此为了封装现实生活

【翻译】JAVA中抽象类和接口的区别

不知道有没有人翻译过了,这篇是挺简单的,权当复习一遍内容吧. 很多常见的面试问题如"抽象类和接口有什么区别","你在什么时候用抽象类什么时候用接口".所以在这篇文章里面,我们会讨论一下这个话题. 在开始讨论它们的区别之前,我们先看看它们的介绍. Abstract class 抽象类 抽象类被用来抽象出子类的共同特征.它是不能被实例化的,它只能被子类继承作为超类使用.抽象类被用作它的子类下的层次结构创建模板(Abstract classes are used to c