本文介绍: 1、继承的含义设计如下类:狗狗类 企鹅类 猫类。可以使用继承来简化代码为什么需要继承多个类中存在相同的属性行为时候,讲这些内容抽取到一个单独的一个类 中。那么多个类无需再定义这些属性和行为,只要继 承即可。这个单独的类称作父类,其他类叫做子 类。可满足 isa关系即可继承实现使用extends实现继承。作用: 使用继承的出现减少了代码冗余,提高的了代码复用性。 继承的出现,更有利于功能扩展 继承的出现让类和类之间产生了关系,提供了多

1、继承的含义

设计如下类:狗狗类 企鹅类 猫类。可以使用继承来简化代码。

为什么需要继承:

多个类中存在相同的属性和行为的时候,讲这些内容抽取到一个单独的一个类 中。那么多个类无需再定义这些属性和行为,只要继 承即可。这个单独的类称作父类,其他类叫做子 类。可满足 isa关系即可用继承实现。使用extends实现继承。

作用:

  • 使用继承的出现减少了代码冗余,提高的了代码的复用性。

  • 继承的出现,更有利于功能扩展

  • 继承的出现让类和类之间产生了关系,提供了多态的前提。

子类继承了父类,就继承了父类方法属性

在子类中可以使用父类中定义的方法属性,也可以创建新的数据和方法。

java中,使用extends实现继承。子类继承父类,是对父类的扩展

继承规则

2、super

super作用

通过super调用父类的构造器:

父类的构造方法都会被执行到。

this与super区别

3、方法重写

在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执 行时,子类的方法将覆盖父类的方法。

  1. 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表

  2. 子类重写的方法的返回值类型不能大于父类被重写的方法的返回类型

  3. 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限子类不能重写父类 中声明private权限的方法

  4. 子类方法抛出的异常不能大于父类被重写方法的异常

  5. static方法是属于类的,子类无法覆盖父类的方法。

4、访问修饰符

5、对象实例过程

1>子类继承父类后,就获取了父类中声明属性和方法

2>创建子类的对象,再堆空间中,就会加载所有父类中声明属性

3>当我们通过子类的构造方法创建子类对象时,我们一定会直接或间接的调用其父类的构造方法, 进而调用父类的构造方法,直到调用了Object类中的无参构造方法为止。真是因为加载过所有的父类结 构,所以才可以看到内存中有父类中的结构,子类对象才可以考虑进行调用。虽然子类调用了父类的构 造方法,但是并没有创建父类的对象

无论通过哪个构造创建子类对象,需要保证先初始化父类。

6、抽象类

抽象类abstract修饰抽象类不能直接new对象抽象类中的方法不一定都是抽象方法.

抽象类的特点

  1. 抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

  2. 抽象类不可以创建实例原因:调用抽象方法没有意义。

  3. 只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。否则该子类还是一个抽象类。

之所以继承,更多的是在思想,是面对共性类型操作会更简单

细节问题

  1. 抽象类一定是个父类?是的,因为不断抽取而来的。

  2. 抽象类是否构造函数?有,虽然不能给自己对象初始化,但是可以给自己的子类对象初始化。 抽象类和一般类的异同点:

    相同:它们都是用来描述事物的。它们之中都可以定义属性和行为。

    不同:一般类可以具体的描述事物。抽象类描述事物的信息不具体抽象类中可以多定义一个成员:抽象 函数。一般类可以创建对象,而抽象类不能创建对象

  3. 抽象类中是否可以不定义抽象方法。是可以的,那这个抽象类的存在到底有什么意义呢?仅仅是不 让该类创建对象

  4. 抽象关键字abstract不可以和哪些关键字共存?finalfianl修饰的类是无法被继承的,而abstract 修饰的类一定要有子类.final修饰的方法无法被覆盖,但是abstract修饰的方法必须要被子类去实现 的。static静态修饰的方法属于类的,它存在与静态区中,和对象就没关系了。而抽象方法没有 方法体,使用类名调用它没有任何意义。private私有的方法子类是无法继承到的,也不存在覆 盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子 类根本无法得到父类这个方法。互相矛盾。

  5. 抽象类是不能使用new操作符初始化的。但是,仍然可以定义它的构造方法,这构造函数在它的 子类的构造函数中调用。即使子类的父类是具体的,这个子类也可以是抽象的。不能使用new操作 符从一个抽象类创建一个实例,但是抽象类可以用作一种数据类型

7、抽象方法

abstract修饰的方法是抽象方法。

抽象方法没有方法体。

抽象方法没有方法体 抽象方法必须在抽象类里

抽象方法必须在子类中被实现,除非子类是抽象类

抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行 扩展、改造,但子类总体上会保留抽象类的行为方式

解决问题功能内部部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露 出去,让子类去实现。

换句话说,在软件开发中实现一个算法时,整体步骤固定、通用,这些步骤已经在父类中写好 了。但是某些部分易变,易变部分可以抽象出来,供不同子类实现。这就是一种模板模式

8、final

final可以修饰属性,方法,类

final修饰的属性是常量

final修饰的方法,不能被重写,可以被继承

final修饰的类不能被继承

原文地址:https://blog.csdn.net/qq_52059326/article/details/122888608

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_23990.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注