013_面向对象_抽象类和接口

1.抽象类(abstract)

  (1)特点

    ①方法只有声明没有实现时,该方法就是抽象方法,抽象方法必须定义到抽象类中,该类也必须被abstract修饰

    ②抽象类不可以被实例化,因为调用抽象方法没有意义。
    ③抽象类必须有子类覆盖所有的抽象方法,该子类才可以实例化,否则,这个子类还是抽象类

  (2)常见问题

    ①抽象类中有构造函数吗?

      有,用来给子类对象初始化
    ②抽象类可以不定义抽象方法吗?
      可以。目的是不让该类创建对象,通常这个类中的方法有方法体,却没有内容
    ③抽象关键字不可以和哪些关键字共存?
      private,static,final
    ④抽象类和一般类的异同
      相同:都是用来描述事物的,都在内部定义了成员
      异同:a.一般类中有足够的信息描述事物,抽象类描述事物的信息可能不足
         b.一般类中不能定义抽象方法抽象类可以定义抽象方法,同时也可以定义非抽象方法
         c.一般类可以被实例化,抽象类不可以被实例化

2.接口(interface)

  接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法(http://www.runoob.com/java/java-interfaces.html)

  (1)固定的修饰符

    ①全局常量:public static final

    ②抽象方法:public abstract

  (2)特点

    ①一个类可以实现多个接口,而且在继承另一个类的同时,还可以实现多个接口。

    ②接口的出现避免了单继承的局限性,接口与接口之间是继承关系,而且接口可以多继承。

  (3)抽象类和接口的异同

    ①相同点:

       都是不断向上抽取而来的
    ②不同点:
      a.抽象类需要继承,而且只能单继承
       接口需要被实现,而且可以多实现

      b.抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法
       接口中只能定义抽象方法,必须由子类去实现

      c.抽象类的继承,是 is 关系,在定义该体系的基本共性内容。
       接口的实现是 like 关系,在定义体系额外功能。

  (4)接口的应用:

    接口类型的引用,用于接受(指向)接口的子类对象。

  

原文地址:https://www.cnblogs.com/lydbky/p/8245614.html

时间: 2024-10-18 06:18:59

013_面向对象_抽象类和接口的相关文章

php面向对象之抽象类和接口理解

结合网上文档和官方文档,自我测试总结心得,实践出真知,时间匆忙,写的不详请谅解! 结合实例分析: <?php header("Content-type:text/html;charset=utf-8"); abstract class People{ protected $age=22; public $height=1.70; abstract function work(); //抽象方法没有方法体,子类必须实现. function run(){} function Peop

黑马程序员_面向对象之抽象类与接口

抽象类(abstract)???? 当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的放过,但是无法精确的知道这些子类是如何实现这些方法,例如定义一个GetTime类,该类提供了一个计算某一段程序运行时间的gettime方法,但是无法知道具体运行什么方法体,这时就需要使用抽象方法来实现了. 抽象类概念 当多个类中出现相同功能,但是功能主体不同,这时候可以进行向上抽取,只抽取功能定义,而

Java面向对象之抽象类,接口

抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的方法 抽象类不能被实例化 子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法 抽象方法的权限修饰符必须为public abstract //人类 public class Person { private String name; //自定义属性 引用类型 宠物

面向对象,抽象类。接口。类库

抽象与接口,库类的使用 抽象类:抽象类,只为继承而出现,不定义具体的内容,只规定该有哪些东西:一般抽象类中只放置抽象方法,只规定了返回类型和参数:比如: 人 - 有吃饭,睡觉方法: 男人 - 继承人抽象类,必须实现吃饭,睡觉的方法主体: 女人 - 继承人抽象类,必须吃饭,睡觉方法的主体: 抽象类中可以有普通属性,通过子类来使用: 1.关键字:abstract 2.抽象类可以包含抽象方法和普通方法3.abstract关键字可以定义方法为抽象方法,抽象方法可以没有函数体4.抽象类无法被实例化,抽象类

【代码学习】PHP面向对象之抽象类与接口

一.什么是抽象方法? 一个方法如果没有方法体(不使用"{}",直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法 1.声明一个方法,不使用{},而直接分号结束 2.如果是抽象方法,必须使用abstract(抽象关键字来修饰) 二.什么是抽象类 1.如果一个类中有一个方法是抽象的方法,则这个类就是抽象类 2.如果声明一个抽象类,则这个类必须使用abstract关键字修饰 <?php //声明一个抽象类,要使用abstract关键字识别 abstract clas

面向对象_抽象类

一.抽象类的基本概念 当多个类中出现相同功能,但是功能主体不同.这时可以进行向上抽取.这时,只抽取功能定义.而不抽取功能主体 使用abstract关键字声明的类为抽象类 二.抽象类的特点 1.方法只有声明没有实现时,该方法就是抽象的,需要被abstract修饰 2.抽象方法一定在抽象类中.(就是说只要类中又抽象方法,这个类就是抽象的) 3.抽象方法和抽象类都必须被abstract关键字修饰 4.抽象类不可以用new创建对象,因为调用抽象方法没有意义. 5.抽象类中的抽象方法要被使用,必须由子类复

面向对象_多态_抽象类_接口

09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 代码体现多态 public class Demo1_polymorphic { /** * 成员变量:编译时看左边(父类),运行时看左边(父类) * 成员方法:编译时看左边(父类),运行时看右边(子类) * @param args */ public static void main(Str

2019-05-17 Java学习日记之面向对象_多态&amp;抽象类&amp;接口

多态 多态的概述: A:多态(polymorphic) 事物存在的多种形态 B:多态前提 a:要有继承关系 b:要有方法重写c:要有父类引用指向子类对象 多态中的成员访问特点之成员变量: 成员变量:编译看左边(父类),运行看左边(父类)多态中的成员访问特点之成员方法:成员方法:编译看左边(父类),运行看右边(子类)多态中的成员访问特点之静态成员方法:静态方法:编译看左边(父类),运行看左边(父类)(静态和类相关,算不上重写,所以访问还是左边的)只有非静态的成员方法,编译看左边,运行看右边 多态的

面向对象基础之抽象类与接口 下

在上篇博文中我们一起了解了抽象类,那么什么是接口呢?下面给大家简单介绍一下: 所谓接口,就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合.一旦类实现了接口,类就可以支持接口所指定的所有属性和成员.声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式,因此接口不能实例化,不能有构造方法和字段,不能有修饰符,如public等.在实现接口的类中必须实现接口中的所有方法和属性. 一个接口可以支持多个接口,多个类也可以支持相同的接口.需要注意的是,接口用interface关