类、接口、抽象类
接口和抽象类可以看成一种特-殊的类,但它们都需要类来实现,且不能创建对象,它们都丰富了类的继承;
一.类: 类与接口和抽象类的最大不同是可以通过构造函数创建对象。且用子类的构造函数创建对象时
父类的无参构造函数优先被掉用了,所以子类创建的对象能继承父类中的方法。
二.接口: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
因为接口可以进行多重继承:
优点:对象可以调用多个基类中的接口。多种功能,加快任务实现。
缺点:易产生二义性和钻石型继承问题。多重性格,易得精神分裂。
以上如果有错误的地方希望大家指出!!
相关推荐
抽象类与接口 抽象类与接口 抽象类与接口 抽象类与接口
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语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,...
抽象类和接口实验报告
c#中抽象类和接口。 相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方法 区 别: (1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、...
1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类; 3.理解接口与抽象类的区别。
学习java的抽象类和接口,入门抽象类和接口必须学会这些内容
主要介绍接口与抽象类的区别,为那些困惑的人指点迷津。
C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例
抽象类和接口的区别 【概述】 一个软件设计的好坏,我想很大程度上取决于它的整体架构, 而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时, 你底层的具体实现...
此书对于你学习Java抽象类和接口有非常大的帮助
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
抽象类和接口 区别分析抽象类和接口 区别分析
JAVA 继承基本类、抽象类、接口区别与联系
本项目主要包括项目开发环境搭建、不同功能的类的设计、抽象类的设计、接口的设计、及其继承抽象类重写和接口实现类等具体功能的实现。 ●工程项目搭建与游戏初始化功能实现(2学时) ; ●动物城成员列表与动物信息...