java中抽象类和接口的异同点

java中抽象类和接口的异同点,第1张

java中抽象类和接口的异同点 1.什么是抽象类?

1.概念

在继承的层次结构中,每个新的子类都使类变得更加明确和具体。如果从一个子类向父类追溯,类就会变得更通用、更加不明确。类的设计应该确保父类包含它的子类的共同特征。有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类称为抽象类(abstract class)。

    或者说,含有抽象方法的类叫抽象类。

    什么是抽象方法呢?

   下面这个例子很容易理解。

    Geometricobject 类定义成Circle类和Rectangle类的父类。Circle类和Rectangle类都包含分别用于计算圆和矩形的面积和周长的getArea()方法和getPerimeter()方法。因为可以计算所有几何对象的面积和周长,所以最好在Geometricobject类中定义 getArea()和getPerimeter() 方法。但是,这些方法不能在Geometricobject类中实现,因为它们的实现取决于几何对象的具体类型。这样的方法称为抽象方法(abstract method),在方法头中使用abstract 修饰符表示。

而在Geometricobject类中定义了这些方法后,GeometricObject就成为一个抽象类。

2.特点

包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

  2)抽象类不能用来创建对象;

  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

  在其他方面,抽象类和普通的类并没有区别。

3.定义抽象类

抽象方法这样定义:

访问修饰符 abstract 返回类型 方法名(参数列表);

如:

public abstract void getArea();

抽象类含抽象方法,跟普通类的区别就是在class前加abstr即可
public abstract class people

{
    public abstract void eat();
}

2.什么是接口

接口的通用格式:public interface 接口名称 {   (方法头...) }(!注意只需写出方法头即可不需要写abstract关键字)

        在接口中的方法虽然没有说明是抽象方法,但默认其为public以及是抽象方法。

        接口和所有方法都是抽象方法的抽象类非常类似。

1.它不能被实例化。

2.在接口中所列的所有方法必须在别处被重写。

3.抽象类和接口的异同点

一个类可以实现多个接口,但是只能继承一个父类。

首先我们先来列举个表格简单讲述一下抽象类和接口之间的异同点:


java只允许为类的继承做单一继承,但是允许使用接口做多重继承。

在接口中的所有属性都为 public、final 和 static.即接口属性必须赋予初始值。(不懂final和static的意思的可以在csdn中搜索查看)

        自然有了接口,便需要如何去实现:

如果一个类要实现接口,它需要在类头中使用implements 关键字。格式为:public class 子类名 extends 父类名 implements 接口名。(接口继承写在类的后面,当然也可以不继承父类,即可选择的)。

        相较于类来说接口还有一个区别便是它可以实现一个类继承多个接口,而子类往往只能继承一个父类。但是,当一个类实现多个接口,它必须实现所有接口中的方法。格式为:public class MyClass implements Interface1,Interface2,Interface3。

        同类一样,接口与接口之间也有着继承的关系,格式:public interface 接口名 extends 父接口1,父接口2,...{}.(!注意但是接口只能继承接口不能继承类)。

        接口与多态性:前面说到接口是不可以被实例化的,但是在java中允许创建接口类型的引用变量。即:interface 物体名称=new 继承自interface的类();
 

 

     

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5695005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存