继承、抽象类和接口

继承
  1、提高了代码的复用性。
2、让类与类之间产生了关系。有了这个关系才有了多态的特性。
  查阅父类功能,创建子类对象使用功能

  继承的特点:

重载
    对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。这里有两个问题需要注意:
(1)什么叫参数列表?参数列表又叫参数签名,指三样东西:参数的类型,参数的个数,参数的顺序。这三者只要有一个不同就叫做参数列表不同。
(2)重载关系只能发生在同一个类中吗?非也。这时候你要深刻理解继承,要知道一个子类所拥有的成员除了自己显式写出来的以外,还有父类遗传下来的。所以子类中的某个方法和父类中继承下来的方法也可以发生重载的关系。
  覆盖
    也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。
当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。
发生覆盖的条件:
1、“三同一不低” 子类和父类的方法名称,参数列表,返回类型必须完全相同,而且子类方法的访问修饰符的权限不能比父类低。
2、子类方法不能抛出比父类方法更多的异常。即子类方法所抛出的异常必须和父类方法所抛出的异常一致,或者是其子类,或者什么也不抛出;

3、被覆盖的方法不能是final类型的。
4、被覆盖的方法不能为private。
5、被覆盖的方法不能为static。

子父类中变量的特点
  变量
如果子类中出线非私有的同名成员变量,用this;
子类要访问父类中的同名变量,用super;
super的使用和this的使用几乎一致,this代表本类对象的引用,super代表父类对象的引用。

子父类中的构造函数
  在对子类对象进行初始化时,父类的构造函数也会运行,因为子类的构造函数第一行默认有一条隐士语句super();super()会访问父类中的空的构造函数,而且子类中所有的构造函数默认第一行都是super().
 final :1、可以修饰类,方法,变量(为了避免被继承,被子类复写)
2、修饰的类不可以被继承
3、修饰的方法不可以被覆盖
4、 修饰的变量是一个常量,只能被赋值一次,既可以修饰成员变量,也可以修饰局部变量
 5、当在描述事物时,一些数据的出现值时固定的,不需要改变的。所以加上final修饰。
 6、内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

 抽象类
  关键字:abstract
  当多个类中出现了相同功能,但是功能主体不同,也可以进行向上抽取,此时只抽取功能定义,而不抽取功能主体。
  特点:
1、抽象方法一定定义在抽象类中;
2、抽象方法和抽象类都要被关键字abstract 修饰;
3、抽象类不能new创建对象,因为调用抽象方法没有意义;
4、抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分了抽象方法,该子类也还是抽象类。

模版设计模式
  在定义功能时,功能的一部分是确定的 ,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分提供出去,由子类去完成。

接口
  一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
  关键字:interface

格式特点:
1、接口中常见定义:常量,抽象方法;
2、接口中的成员都有固定修饰符。
 常量:public、static、final
方法:public abstract
总结:接口中的成员都是public 的;接口时不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。
  被类多实现:interface Inter1{
}
interface Inter2{
}
class Test implements Inter1,Inter2{

}

接口的特点:
 接口是对外暴露的原则;
 接口是程序的功能扩展;
 接口可以用来多实现;子类可同时继承其他父类;
 类与接口至简是实现关系,而且类可以继承一个类的同时实现多个接口;
 接口与接口之间可以有继承关系;

时间: 2024-11-03 11:25:18

继承、抽象类和接口的相关文章

Java基础-抽象类和接口

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

java中抽象类和接口的用法和区别

一.抽象类 1.抽象类 包含一个抽象方法的类就是抽象类 2.抽象方法 声明而未被实现的方法,抽象方法必须使用abstract关键词字声明 public abstract class People { //关键词abstract,声明该类为抽象类 public int age; public void Num() { } public abstract Name(); //声明该方法为抽象方法 } 3.抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 4.抽象类不能被直接实例

面向对象 多态、抽象类和接口

今天,我主要学习了多态.抽象类和接口的部分内容. 在实际的操作中,同样都是继承了同一个父类,但是父类中的方法并不适用任何一个子类,那么在这就需要子类重新编写这个方法的主体. 在重写成员方法时,需要父类同意子类可以重新编写自己的方法:virtual -  虚方法:子类只能重写父类允许重写的方法,只能重写虚方法:override - 重写覆盖虚方法. 基类与派生类是相对的,所有的类都可以当做父类,都可以有虚方法. 抽象类:abstract 抽象类就是为了被继承而出现的.普通的类中所有的方法都变成虚方

抽象方法,抽象类,接口

抽象类:具有抽象方法的类就是抽象类 抽象方法:没有方法体的方法就是抽象方法 作用:主要协同工作,制定标准 特征: 抽象方法就是没有方法体的方法, 方法体就相当于函数体,抽想方法前,必须使用abstract 关键字,且方法后不能够写{},但是要写结束符; 如果类中有抽象方法,那么这个类的前面也需要 abstract关键字修饰 抽象类中可以有非抽象方法 抽象类可以参数,要实现该抽象方法,必须传入同样参数 不能直接实例化,必须由其他的类继承并且完全实现出所有的抽象方法,才可以使用,抽像类主要是给其他类

一个接口能否继承另一个接口?一个抽象类能否实现一个接口?

都可以: 一.一个接口能否继承另一个接口? 接口继承接口  本质就是一个抽象类继承另一个抽象类(它们都没写方法的实例).当一个类继承了一个抽象类,它必须要重写父类 抽象类中的抽象方法,如果不去重写父类抽象方法的实例,那么这个类也是抽象类(这个抽象子类,直到重写这个抽象方法的实例为止, 才能摆脱抽象的命运).其实我们想想,一个类去实现一个接口也不就是一个实体子类把一个抽象的所以抽象方法实例化(重写了 抽象父类 中全部抽象方法),当然抽象类和接口还是有区别的.我上上篇就写到了抽象类和接口的区别,有兴

面向对象二 — — 继承、抽象类、接口

一.继承 extends 继承的特点:Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类 1.参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载. 2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载. 3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常. 用supe

[原创]抽象类实现接口,子类继承抽象类,这三者之间的关系?

①一个类实现一个接口,那么这个类必须实现该接口中的所有方法,因为接口中的方法默认都是 public,abstract类型的,所以实现接口的类都必须重写该接口中的所有方法,比如: interface A { boolean add(); boolean offer1(); boolean offer2(); } public class Test01 implements A{//必须实现A接口中的所有方法 @Override public boolean add() { return false

黑马程序员——Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等

第一讲 继承 1.继承: 当多个类拥有相同的功能时,那么这些类不需要每个都写这些相同的功能,只需要把相同功能抽到 一个单独的类中,继承这个类就能获得这些相同的功能: (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构. 要了解这个体系结构中最共性的内容,就看最顶层的类. 要使用这个体系的功能,就用最底层的类创建对象 (2)好处: A.提高代码复用性: B.继承的出现,让类与类之间产生关系,为多态的前提 (3)特点: A.只能单继承(准确的说是java对多继承进行优化,避

Java基础-继承、抽象类、接口

继承和接口是OOP程序设计语言中非常重要的两个概念,也是经常让程序员对其使用比较混淆的.什么时候用继承好一些,什么时候用接口好一些呢? 首先,从OOP程序设计语言的多态特性来说两者都是多态的一种体现.继承更侧重于给对象进行归类(继承体系)和接口则侧重于对功能方法进行归类. 每个类都属于特定的继承体系,所有的类向上转换最终只能转成一个基类.继承将"做什么"和"怎么做"耦合在一起,如果需要复用现有的方法必须将新增的类添加到现有的继承体系中(或者采用包装类). 接口则可以

黑马程序员——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对象的特点: * 符合人们思考习惯的思想 * 可以将复杂的事情简单化 * 将程序员从执行者转换成了指挥者 * 完成需求时:只需要寻找具备所需功能的对象或者创建所需功能的对象即可,简化开发效率并提高对象的复用性. 3.面向对象的三个特征:封装(Encapsulation).继承(Inheritance).多态(Polymorphism). 二.类与对象 (一)类与对象之间的关系 1.类的定义:类