`

类,接口,抽象类

阅读更多

                                                类、接口、抽象类

 接口和抽象类可以看成一种特-殊的类但它们都需要类来实现,且不能创建对象,它们都丰富了类的继承;

一.类:    类与接口和抽象类的最大不同是可以通过构造函数创建对象。且用子类的构造函数创建对象时

 

               父类的无参构造函数优先被掉用了,所以子类创建的对象能继承父类中的方法。    

   

二.接口:1.声明一个接口 public interface 接口名{  }
               2.接口中只能定义常量public final static 数据类型 常量名 (final说明是不能改变的,static说明该

                  常量在内存中只有一份,并且能够通过接口名.常量名直接调用不需要通过对象来调用它们)和

                  抽象方法 public 返回类型 函数名(数据类型 参数名,...);(注意是以分号结束,并且没有{}

                  号,接口中的方法默认都是Public型的。
              3.接口要靠类来实现 public class 类名 implements 接口名,...{  } (可以把接口看做是实现类的

                 父类,并且一个类可以实现(继承)多个接口),在实现接口的类中必须要把接口和接口的父类中的

                  所有方法都实现。在实现类中我们就可以通过自动转型来创建一个接口型的对象:

                 接口名 对象 = new 类名(),但这个对象不能调用类中的函数,只能调用接口中的函数,这和

                  类之间的自动转型一样,子类转化为父类后不能调用子类中定义的方法。
               4.接口也可以继承接口,并且一个接口可以继承多个接口 public class 类名 extends  接口名,...{ }

               5.如果一个类要同时继承一个类和接口,这必须先继承类再继承接口 public class 类名 extends

                  类名 implements 接口名 (个人猜想可能父类中可能会实现了接口中的某个方法,若先继承接口

                  则父类中的那个方法会被重写,这纯属我的猜测微笑

               6.接口中的方法都是抽象方法,因此可以省略abstract.
三.抽象类:1.声明一个抽象类 public abstract class 类名{   }

                   2.抽象类是介于接口和类之间的定义,它可以实现接口的所有功能。它能定义所有类和接口中的
                     内容(构造函数除外),但它申明抽象函数时和接口有点不同,他需要在函数前加上abstract,

                     public abstract 返回类型 函数名();

                   3.抽象类可以继承类和接口,也可以被类继承(一个类只能继承一个抽象类这和接口的

                      implements不同)

                    4.一个继承了接口类的抽象函数,接口中的的函数可以在抽象类中实现,也可以放到抽象类的子

                      类中实现。

                    5.我们会发现接口中定义了很多方法,但通常我们只需要用到其中的某个方法,如果我们直接

                       继承这个接口,其他方法也必须写一遍,写成一个空方法,说一我们可以弄一个抽象类实现

                      口中的所有方法(空方法),这样我们的子类就只要重写需要用到的方法。

总结:

接口和抽象类都不能实例化对象。

接口的优点:接口可以被多继承;设计和实现完全分离;更自然的是用多态;更容易搭建程序框架;更容易更换实现;
接口的理解:接口是一种约定,一个类实现一个接口就必须实现该接口中的所有抽象方法,这些方法可以看成是一个约定;

                    有些接口只有一个名字,里面什么都没有,这样的接口叫做标记接口
                     接口与其实现类的关系是ia-like-a
                    继承中父类与子类体现的关系式is-a

因为接口可以进行多重继承:

优点:对象可以调用多个基类中的接口。多种功能,加快任务实现。

缺点:易产生二义性和钻石型继承问题。多重性格,易得精神分裂。

 


         以上如果有错误的地方希望大家指出!! 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    C#抽象类与接口方法

    抽象类与接口 抽象类与接口 抽象类与接口 抽象类与接口

    java抽象类与接口实例java抽象类与接口实例

    java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...

    Java中的类、抽象类和接口的区别和联系

    Java中的类、抽象类和接口的区别和联系

    Java 接口和抽象类

    Java 接口和抽象类 Java 编程语言提供了两种机制来实现面向对象编程的多态性:接口和抽象类。这两种机制使得 Java 应用开发具有灵活性和敏捷性。 抽象类 抽象类是一种特殊的类,它不能被实例化,不能被直接使用,...

    Java抽象类与接口实验报告

    Java抽象类与接口实验报告

    Java继承_抽象类与接口的应用.

    1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结

    详细解析Java中抽象类和接口的区别

    抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    (3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,...

    抽象类和接口实验报告.doc

    抽象类和接口实验报告

    C#接口抽象类区别实例

    c#中抽象类和接口。 相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方法 区 别: (1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、...

    抽象类和接口

    1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类; 3.理解接口与抽象类的区别。

    抽象类和接口练习

    学习java的抽象类和接口,入门抽象类和接口必须学会这些内容

    接口与抽象类区别

    主要介绍接口与抽象类的区别,为那些困惑的人指点迷津。

    C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例

    C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例

    抽象类和接口的区别

    抽象类和接口的区别 【概述】 一个软件设计的好坏,我想很大程度上取决于它的整体架构, 而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时, 你底层的具体实现...

    Java抽象类和接口.ppt

    此书对于你学习Java抽象类和接口有非常大的帮助

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    抽象类和接口 区别分析

    抽象类和接口 区别分析抽象类和接口 区别分析

    JAVA 继承基本类、抽象类、接口区别与联系

    JAVA 继承基本类、抽象类、接口区别与联系

    基于Java抽象类和接口实现疯狂动物城

    本项目主要包括项目开发环境搭建、不同功能的类的设计、抽象类的设计、接口的设计、及其继承抽象类重写和接口实现类等具体功能的实现。 ●工程项目搭建与游戏初始化功能实现(2学时) ; ●动物城成员列表与动物信息...

Global site tag (gtag.js) - Google Analytics