Java系列学习(八)-继承
1.代码块
(1)在java中,使用 { } 括起来的代码 被称为代码块
(2)分类:
A:局部代码块
【局部位置】
【作用:用于限定 变量的生命周期】
B:构造代码块
【在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。】
【作用:可以把多个构造方法的共同 代码放到一起,对对象进行初始化】
C:静态代码块
【在类的成员位置,用{}括起来的代码,只不过它用static修饰了】
【作用:一般是对类进行初始化】
(3)结论:
A:执行顺序 :
【静态代码块 > 构造代码块 > 构造方法】
B:静态代码块:只执行一次
C:构造代码块:每次调用构造方法都会执行
2.继承
(1)把多个类中相同的成员给提取出来 定义到一个独立的类中,然后让多个类和该独立类产生一个关系。
这种关系,就叫做继承。
(2)Java中表示继承
A:用关键字 extends 表示
B:格式
(3)继承的好处:
A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类产生了一个关系,是多态的前提
(4)继承的弊端:
A:让 类的耦合性增强。这个类的改变,会影响其他和该类相关的类
【原则:低耦合,高内聚 】
【耦合:类与类的关系】
【内聚:自己完成某件事情的能力】
B:打破了封闭性
(5)Java中继承的特点:
A:Java中类只支持单继承
B:Java中可以多层继承
(6)继承的注意事项
A:子类不能继承父类的私有成员
B:子类不能继承父类的构造方法,但可以通过 super 去访问
C:不要为了部分功能而去继承
(7)什么时候使用继承
A:继承体现 的是:is a 的关系(苹果 is a 水果)
B:采用假设法
(8)Java继承中的成员关系
A:成员变量
【子类的成员变量名称 和 父类的成员变量名称 不一样】
【子类的成员变量名称 和 父类的成员变量名称 一样】
【子类中 调用父类中 指定成员变量 】
B:构造方法
【子类的构造方法默认会去访问父类的无参构造方法】
【子类中如果没有无参构造方法】
方法一:在父类中加一个带参数的构造方法
方法二:通过super关键字去显示的调用父类的带参数构造方法
方式三:子类通过this去调用本类的其他构造方法
【子类中一定要有一个去访问父类的构造方法,否则父类数据就没有初始化】
【注】this(…) 和 super(…) 必须放在第一条语句,否则会对父类进行多次初始化
C:成员方法
【子类的成员方法名称 和 父类的成员方法名称 不一样】
【子类的成员方法名称 和 父类的成员方法名称 一样】
(9)this与super
A:区别
【this代表本类对应的引用】
【super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)】
B:使用
【调用成员变量】
this.成员变量--调用本类的成员变量
super.成员变量--调用父类的成员变量
【调用构造方法】
this(…)--调用本类的构造方法
super(…)--调用父类的构造方法
【调用成员方法】
this.成员方法--调用本类的成员方法
super.成员方法--调用父类的成员方法
3.方法的重写(Override)
(1)定义:
子类中出现了和父类中方法声明一模一样的方法
(2)应用:
当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法。这样,既沿袭了父类的功能,又定义了子类特有的内容
(3)使用方式:
(4)注意事项
A:父类中私有方法不能被重写
【因为父类 私有方法,子类根本就无法继承】
B:子类重写父类方法时,访问权限不能更低
【子类权限 最好 和父类一致】
C:父类静态方法,子类也必须通过静态方法进行重写
【这个算不上重写,但是现象确实如此】
Java系列学习(八)-继承的更多相关文章
- JAVA第八次作业
JAVA第八次作业 (一)学习总结 1.用思维导图对本周的学习内容进行总结 参考资料: XMind. 2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery ...
- Java基础八--构造函数
Java基础八--构造函数 一.子父类中构造函数的特点 1.1 为什么在子类构造对象时,发现,访问子类构造函数时,父类也运行了呢? 原因是:在子类的构造函数中第一行有一个默认的隐式语句. super( ...
- “全栈2019”Java第八十五章:实现接口中的嵌套接口
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 关于Java中的继承和组合的一个错误使用的例子
[TOC] 关于Java中的继承和组合的一个错误使用的例子 相信绝大多数人都比较熟悉Java中的「继承」和「组合」这两个东西,本篇文章就主要就这两个话题谈论一下.如果我某些地方写的不对,或者比较幼稚, ...
- java中的继承与oc中的继承的区别
为什么要使用继承? 继承的好处: (1)抽取出了重复的代码,使代码更加灵活 (2)建立了类和类之间的联系 继承的缺点: 耦合性太强 OC中的继承 1.OC中不允许子类和父类拥有相同名称的成员变量名:( ...
- JAVA封装、继承
封装 1.概念: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实 ...
- <Java中的继承和组合之间的联系和区别>
//Java中的继承和组合之间的联系和区别 //本例是继承 class Animal { private void beat() { System.out.println("心胀跳动...& ...
- Java中的继承
我们在以前的学习中,我们会了C#中的继承,今天我们来了解了解Java中的继承,其实都大同小异啦! 1.语法 修饰符 SubClass extends SuperClass(){ //类定义部分 } e ...
- Java面向对象的继承
继承也是面向对象的又一重要特性,继承是类于类的一种关系,通俗来说狗属于动物类,那么狗这个类就继承了动物类 java中的继承是单继承的,一个类只能继承与一个父类 子类继承父类之后,子类就拥有了父类的所有 ...
随机推荐
- 【Codeforces 1034A】Enlarge GCD
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 设原来n个数字的gcd为g 减少某些数字之后 新的gcd肯定是g的倍数 即gx 我们可以枚举这个x值(x>=2) 看看原来的数字里面有多 ...
- Java基础学习总结(80)——Java性能优化详解
让Java应用程序运行是一回事,但让他们跑得快就是另外一回事了.在面对对象的环境中,性能问题就像来势凶猛的野兽.但JVM的复杂性将性能调整的复杂程度增加了一个级别.这里Refcard涵盖了JVM in ...
- cocos2dx luajavaBridge 学习笔记
我在网上看到了 LuaJavaBridge 的 使用方法这篇文章 https://segmentfault.com/a/1190000004252394?utm_source=tuicool& ...
- ISO 7064:1983.MOD11-2校验码计算法 : (身份证校验码-18位)
/* 假设某一17位数字是 17位数字 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 加权因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 计算17位 ...
- Cocos Code IDE + Lua初次使用FastTiledMap的坑
近期想玩玩Lua.又想玩玩Cocos Code IDE.更加想写一个即时战斗的.防守的.会动的.有迷雾的.要探索的(旁白:给我停!)跑地图游戏. 于是我就用Cocos Code IDE来写游戏了.挑战 ...
- eclipse中报错:java.lang.OutOfMemoryError: Java heap space
问题: 在eclipse中执行java程序.去重100多万的数据,报例如以下错误: java.lang.OutOfMemoryError: Java heap space 异常原因: 在JVM中假设9 ...
- iOS开发-植入广告(iAd, Admob实例)
应用中植入广告是一种非常好的盈利手段. 以下介绍主流的两种方法.iAd, Admob 先mark一个非常具体的pdf. http://pan.baidu.com/share/link?sharei ...
- C# 数组转换为DataTable 的三个方法
C# 数组转换为DataTable 的三个方法 using System; using System.Data; namespace ArrayToDataTable { class ArrayT ...
- [模板]平衡树splay
气死我了,调了一个下午+两节课,各种大大小小的错误,各种调QAQ,最后总之是调出来了. 其实就是一个双旋操作,然后其他就是左儿子<当前节点<右儿子,剩下就是细节了. 题干: 题目描述 您需 ...
- [luogu_U15116]珈百璃堕落的开始
https://www.zybuluo.com/ysner/note/1239458 题面 给定\(n\)个二元组\((x,y)\),问有多少种方案,使得选出其中几个后,\(\sum x=\sum y ...