第二阶段 JAVA面向对象

第二章 继承

其实在我们面向对象这一阶段的学习中,我们就是围绕Java的三大特性(封装、继承、多态)来讲解的,在上一掌内容中我们讲解了一部分封装的有关知识,今天我们来重点学习继承的学习。

2.1 继承的基本认识

概述:

继承就是在一个已有类的基础上派生出新类

子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

(父类更通用,子类更具体)

#### 功能:有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的 基础上,还可以定义自己的新成员。

格式:class 子类名 extends 父类名 {}

好处:

A:提高了代码的复用性

B:提高了代码的维护性(通过少量的修改,满足不断变化的具体要求)

C:让类与类产生了一个关系,是多态的前提

要求:

有共同的属性或操作

有细微的差别

2.2 继承的弊端

A:让类的耦合性增强。这样某个类的改变就会影响其他和该类相关的类

·原则:低耦合,高内聚。

·耦合:类与类的关系

·内聚:自己完成某件事情的能力

B:打破了封装性

特点:

A:Java只支持单继承,不支持多继承(C++支持)

B:Java支持多层继承(继承体系)

儿子继承爸爸 爸爸继承爷爷 儿子可以通过爸爸继承爷爷

注意:

A: 子类只能继承父类所有非私有成员(成员方法和成员变量)

B:子类不能继承父类的构造方法,但是可以通过super关键字去访问方法

C: 不要为了部分功能而继承(多层继承会使得子类继承多余的方法)

2.3 Java继承中的成员关系

A:成员变量

a:子类的成员变量名称和父类中的成员变量名称不一样,这个太简单

b:子类的成员变量名称和父类中的成员变量名称一样,这个怎么访问

子类的方法访问变量的查找顺序:

​ ·在子类方法的局部范围找,有就使用。

·在子类的成员范围找,有就使用。

·在父类的成员范围找,有就使用。

·找不到,就报错。

2.4 Super 关键字

不仅要输出局部范围的num,还要输出本类成员范围的num

使用super关键字

this 和super的区别

this 代表本类对应的引用

Super 代表父亲存储空间的标识(可以理解为父亲引用)可以操作父亲 的成员

使用方法:

A:调用成员变量

·this.成员变量 调用本类的成员变量

·super.成员变量 调用父类的成员变量

B:调用构造方法

·this(...) 调用本类的成员变量

·Super(...)调用父类的成员变量

C:调用成员方法

·this.成员方法 调用本类的成员方法

·super.成员方法 调用父类的成员方法

2.5 继承中构造方法的关系

A:子类中所有的构造方法默认都会访问父类中空参数的构造方法

B:理由:

因为子类会继承父类中的数据,可能还会使用父类的数据

所以,子类初始化之前,一定要先完成父类数据的初始化

注意:子类每一个构造方法的第一条语句默认都是:super()

如果父类没有无参构造方法,那么子类的构造方法会出现什么现象?

报错

解决方法:

A:在父类中加一个无参构造方法

B:通过使用super关键字去显示的调用父类的带参构造方法

C:子类通过this去调用本类的其他构造方法

子类中一定要有一个去访问父类的构造方法,否则父类数据就没 有初始化。

注意事项;

this(...)或者super(...)必须出现在第一条语句上。

否则就可能对父类的数据进行了多次初始化

2.6 继承中成员方法的关系

子类中的方法和父类中的方法声明一样

通过子类调用方法:

·先找子类中,看有没有这个方法,有就使用

·再看父类中,看有没有这个方法,有就是用

·如果没有就报错(不去看父亲的父亲)

2.7 方法重写(override)

方法重写:子类中出现了和父类中方法声明一模一样的方法

(区别于方法重载,方法重载仅仅是方法名一样)

子类重写的应用:当子类需要父类的功能,而功能主体子类又有自己特有的内容时,这样既沿袭了父类的功能,又定义了子类特有的功能

super.**方法名(参数名); //避免重复代码**

2.8 final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;

或者用于修饰方法,该方法不能被子类重写:

Final修饰变量的初始化时机

·被final修饰的变量只能赋值一次

·在构造方法完毕前(非静态的常量)

//声明方法

结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^

如果能帮到你的话,那就来关注我吧!

在这里的我们素不相识,却都在为了自己的梦而努力 ❤
一个坚持推送原创Java技术的公众号:理想二旬不止

子类怎么继承父类方法中的变量_关于继承的那些事!相关推荐

  1. 子类怎么继承父类方法中的变量_JavaOOP_04 封装 继承

    一.封装 概念:隐藏程序内部的具体实现细节,对外提供接口,从而提高程序的安全性. 高内聚,低耦合. 使用封装的步骤: 1.属性私有化,使用private访问修饰符进行修饰 2.对外提供 setter/ ...

  2. Java 中子类是否只继承父类的非私有变量和方法?

    今天在 CSDN 论坛中见到有人问在 Java 中子类是否只继承父类的非私有变量和方法(原贴在此).大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的. 首先我们明确一下&quo ...

  3. java 实例方法直接调用超类的实例方法_Java继承关系中,父类方法使用实例变量和调用实例方法的探究...

    面向对象编程中,某一个实例方法使用实例变量和调用其它实例方法的情况是常见的.当存在继承关系时,这种情况就变得复杂起来.以下就对继承关系中,父类的某实例方法使用实例变量和其它实例方法的情况进行探究.因为 ...

  4. 子类调用父类方法时,方法中的变量用谁的

    public class T1 {private int a=6;public void ha(){System.out.println(this.a);} } public class T2 ext ...

  5. java 父类this_java父类方法中使用this,可以把this强转为子类对象,然后调用子类的实例方法,怎么解释?...

    1.代码如下 父类代码: public class A { public void a(){ B b=(B)this; System.out.println(b.getNum()); System.o ...

  6. 【Python】继承、父类、子类、方法重写、子类调用父类方法、super()函数、多继承

    Python继承 2021/6/21 周一 学习内容:父类.子类.方法重写.子类调用父类方法.super()函数.多继承 Python入门,主要是看 菜鸟教程.w3school 网站,以及电子工业出版 ...

  7. 谈谈java中成员变量与成员方法继承的问题

    谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类: 其次再创建一个子类,子类中要比父类中少一个成员方法: 这样 ...

  8. JavaScript 继承父类方法的正确姿势

    JavaScript 继承父类方法的正确姿势 不想看前期的介绍可以直接划到最下面看总结和正确姿势,跳过原因的讲解. 初学 js ,总是喜欢把方法直接定义在对象内部,类似于 Java 那样. 下面定义一 ...

  9. python-类的继承和多态-继承父类方法和属性的多种方法-继承多个类,继承顺序的研究

    一.Reference Python interview - override & overload_加藤蜀黍的博客-CSDN博客 Python:类的继承,调用父类的属性和方法基础详解_奥卡姆 ...

最新文章

  1. 为gridview“删除”列添加确认对话框
  2. python程序员月薪智的-在三线城市Python工程师也能拿到月薪20K
  3. SpringBoot 使用(三): 配置文件详解
  4. PHP扩展开发 - 构建第一个PHP扩展
  5. @suppressWarnings(unchecked)及其相关属性在Java中意思
  6. Expression Blend 利用 SketchFlow 制作原型
  7. js分享微信 ,微博 ,qq空间
  8. python类加载_如何重新加载一个类在python shell?
  9. 使用TensorFlow给花朵#127802;分类
  10. airpods pro是按压还是触摸_AirPods Pro入手开箱 稍后补充使用感受
  11. 使用自定义端口连接SQL Server 的方法
  12. 微信支付开发(1) JS API支付V3版(转)
  13. 国家计算机房机柜接地图集,中国铁塔机房及室外机柜标准图集.pdf
  14. 疯狂Java讲义(阅读笔记)(第一章)
  15. 【阅读分享】《暗时间》——放弃学习,寸步难行
  16. python求圆柱体的体积_面向对象的Python程序计算球体的体积和表面积
  17. 启动docker-compose时报/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarnin
  18. Windows 11 下 Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task
  19. opencv3学习:reshape函数
  20. 计算机网络的形成和发展

热门文章

  1. jmeter java性能_jmeter之自定义java请求性能测试
  2. Java 算法 一元多项式求导
  3. Mac 上无法使用netstat的-p参数
  4. 使用pandas 按同一列名称合并,并解决concat() got an unexpected keyword argument ‘join_axes‘报错
  5. 日志能被截取吗 log4j_Java日志体系居然这么复杂?——架构篇
  6. python程序的运行速度在所有计算机语言中最快_【编程专题】实测四种编程语言的运算速度,最快的竟然是它!...
  7. php自动裁剪黑边,视频画面裁剪怎么将视频四周的黑边去除?
  8. 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。...
  9. 卡尔曼滤波的基本原理
  10. JS里的居民们5-数组(栈)