关键词:
Java12-java语法基础(十一)继承
一、继承
学习要求:
1、 理解继承的概念与作用
2、 掌握继承的实现机制
3、理解继承中的覆写与覆盖
4、掌握super关键字的使用
回顾:
1、对客观世界进行分析,抽象成类,并利用java语言实现。
2、利用private进行封装。
3、利用this关键字引用类中的数据成员和方法。
1、继承的概念和作用
同类事物既有共性又有其各自的特殊性。
1)继承机制
在由一般类和特殊类形成的一般-特殊之间 的结构中,把一般类和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行的定义,在特殊类中不再重复定义一般类中已经定义的属性和操作,特殊类自动地拥有一般类(以及所有更上层的一般类)中定义的属性和操作。特殊类的对象拥有其一般类的对象的全部属性与操作(除非进行限制),称作特殊类对一般类的继承。
2)继承特征
(1)传递:类C继承了类B,类B继承了类A,则类C既有从类B继承下来的属性与方法,也有从类A那里继承下来的属性和方法。
(2)类之间的层次关系:简化了人们对客观事物的认识和描述,能清晰体现相关类之间的层次结构关系。
(3)软件复用功能:类B继承类A,那么建立类B时只需要描述与父类(类A)不同的特征(数据成员和成员方法)即可。这种方法能减少代码量和数据的冗余度,大大增加程序的重用性。
(4)已维护性:减少了模块之间的接口和界面,大大增强了软件的易维护性。
(5)多重继承机制:接口机制来实现多重继承,即一个子类有多个父类。
附:
耦合:模块和模块之间的紧密程度
类聚:模块内部的功能
开发中:高内聚、低耦合好。
2、实现继承机制
java中,通过extend来实现继承
格式:
class 子类名称 extend 父类名称{
子类数据成员
子类成员方法
}
注意:
(1)父类:基类、超类---->一般类
强调:在java中,所有类的基类都是Object类:java.lang.Object
(2)子类:派生类---->特殊性
(3)在继承中,子类自动拥有父类的可访问成员。
课堂练习:交通工具类
注意:子类虽然拥有父类属性,但不能直接访问父类的私有成员,非私有成员可以访问
3、方法的覆写和属性覆盖
(1)方法覆写:子类拥有与父类非私有成员方法同名的成员方法
必须保证被子类覆写的方法不能拥有比父类更为严格的访问权限。
(2)属性覆盖:子类拥有与父类非私有数据成员同名的数据成员
在数据成员覆盖关系中,成员方法使用数据成员按照就近原则使用数据成员。
4、super关键字
(1)可以访问直接父类中被子类覆盖的同名数据成员:super.数据成员名
直接父类 ---> extends后的类
在java中,只能单继承,一个类的直接父类只能有一个。
(2)可以访问直接父类中被子类覆写的同名成员方法:super.成员方法名(参数);
(3)调用直接父类的构造方法,必须放第一行:super();
强调:父类必须显示的写出空构造方法
继承机制中调用构造方法的顺序:先父类再子类
5、向上转型
父类:Animal
子类:Cat,Dog
向上转型:
Animal dog = new Dog();
Animal cat = new Cat();
说明:Animal类型的dog可以调用Dog子类的方法,Animal类型的dog可以调用Dog子类的方法。
向上转型可以隐藏一些实现细节
二、final和instanceof
(一)final关键字
1、修饰类:修饰的类不能被继承,即不能派生子类
final class{}
2、修饰成员方法:修饰的方法不能被子类的方法覆盖
final public void printInfo(){}
3、修饰数据成员:修饰的数据成员或者局部变量表示常量,不能更改它的值;这时一般数据成员全部大写,单词用下划线分隔。
final private String name;
注:被final修饰的常见的类:String、System……
强调:子类不能覆盖父类方法时,子类中的成员方法名与父类的成员方法名相同会报错,即此时子类中不可以出现与父类同名的方法。
4、final修饰引用变量:该变量只能始终引用一个对象,但可以改变对象的内容
(二)instanceof关键字/运算符
Java的常用类库有几百个,在软件开发过程中创建很多不同类型的对象,经常需要判断某个对象属于哪个类,利用instanceof关键字可以判断一个对象是哪个类的实例。
1、语法格式:
对象 instanceof 类;
结果为true说明对象是类的实例;false说明对象不是类的实例
示例:
class A{}
class B extends A{}
测试:
A a = new A();
B b = new B();
b insctaceof B;//true
b insctaceof A;//true
a insctaceof B;//false
结果:对象被子类创建后,它既是子类的实例,也是父类的实例。
(三)小结
1、final关键字的主要作用?
(1)修饰类,不能被继承
(2)修饰方法,不允许覆写
(3)修饰成员变量,不允许更改,为常量
(4)修饰引用类型变量,始终引用一个对象,但可以改变对象的内容
2、final关键字修饰数据有哪些要求?
(1)修饰局部变量只能赋值一次
(2)修饰非静态数据成员必须在构造方法中初始化,或者直接初始化
(3)修饰的静态数据成员必须初始化
3、为什么使用instanceof关键字?
判断对象是否是类的实例
java基础语法万字解析java的包和继承(代码片段)
...4.创建包5.包的访问权限6.常见的系统包二、继承1.概念2.语法规则(含super使用)3.protected关键字4.更复杂的继承关系5.final关键字三、组合四、总结(含谜底)一、包1.概念根据定义:包是组织类的一种方式那么... 查看详情
java基础语法——面向对象
...的类4.常见的系统包5.包的访问权限二、继承1.引入2.基本语法规则关键字super注意3.protected关键字defaultpublicprivateprotected访问修饰符的选择小结4.更复杂的继承关系5.final关键字三、组合四、多态1.向上转型(1)概念了解... 查看详情
css入门基础基础语法规则
基础语法规则CSS规则由两个主要的部分构成:1.选择器:通常是需要改变样式的HTML元素2.一条或多条声明:由一个属性和一个值组成。每个属性有一个值。属性和值被冒号分开。选择器:分组:用逗号可以将需要分组的选择器分开... 查看详情
java基础继承
...父类当中。父类更通用,子类更具体。1父类的继承格式2语法:publicclass父类{34}publicclass子类extends父类{}继承关键字:extends在java中类的继承是单一继承,就是说一个子类只能拥有一个父类super关键字 super的 查看详情
java基础_基础语法知识8
面向对象1.final关键字(1).final关键字意思是最终的,最后的。(2).final关键字可以修饰类,方法以及变量。(3).final关键字修饰类,这一个类就编程最终类,这一个时候最终类不可以被继承。final关键字修饰方法,该方法不能够被重写... 查看详情
java基础—继承
...方法和属性,这样能够减少代码冗余(重复)语法:访问修饰符class子类名extends父类名extends的意思是“扩展”。子类是父类的扩展。Java中只有单继承,没有多继承(即一个子类只能继承一个父类,但... 查看详情
基础01
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法1.一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有... 查看详情
2018java基础面试题
Java基础部分基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io?的语法,虚拟机方面的语法。1、一个".java"源文件中是否可以包括多个类(不是内部... 查看详情
java入门-语言基础-03.基础语法
.../training/java-basic-syntax.html更多教程:光束云-免费课程基础语法序号文内章节视频1第一个Java程序-2基本语法-3Java标识符-4Java修饰符-5Java变量-6Java数组-7Java枚举-8Java关键字-9Java注释-10Java空行-11继承-12接口-13Java源程序与编译型运行区... 查看详情
java基础杂烩_继承(inheritance)
...编程的逻辑性。 2.以上都是我编的 3.声明继承的语法:在子类后使用extends来指定该类所继承的超类。classSubClassextendsSuperClass{...} 查看详情
c++基础语法继承——万字总结,干货满满
...继承1、什么样的场景会使用继承2、什么是继承3、继承的语法继承方式1、访问修饰限定符的作用(1)修饰类中成员(2)修饰继承方式基类\\派生类对象赋值兼容问题(切割问题)1、基类\\派生类对象赋值... 查看详情
java面向对象基础之继承
...板名比如:com.test包的导入----不同包中的类互相调用语法:import<包名>.<类名>示例:importjava.awt.color.*;2. 查看详情
java面向对象基础之继承
...板名比如:com.test包的导入----不同包中的类互相调用语法:import<包名>.<类名>示例:importjava.awt.color.*;2. 查看详情
类型语法基础和内存管理基础
一:基础类型和语法1.1.net中所有类型的基类是什么: 在.net中所有的内建类型都继承System.Object类型。C#中编译器自动添加继承申明 publicclassA publicclassA:System.Object 1.2值类型和引用类型的区别 .net中分值类型和引... 查看详情
scala学习——基础语法
Scala语言是一种面向对象语言,结合了命令式(imperative)和函数式(functional)编程风格,其设计理念是创造一种更好地支持组件的语言。 特性多范式(Multi-Paradigm)编程语言,类似Java、C#;继承面向对象编程和函数式编程的... 查看详情
kotlin快速入门:基础语法类与继承集合(代码片段)
参考书籍:《AtomicKotlin》,全英文,读起来慢,但是写得很详细,没有任何语言基础的也能看懂《第一行代码Android第三版》,第二章,有java基础的看一看就会了Kotlin中文文档,很详细,可以当... 查看详情
kotlin快速入门:基础语法类与继承集合(代码片段)
参考书籍:《AtomicKotlin》,全英文,读起来慢,但是写得很详细,没有任何语言基础的也能看懂《第一行代码Android第三版》,第二章,有java基础的看一看就会了Kotlin中文文档,很详细,可以当... 查看详情
css基础语法css的6种特性
样式表常用写法及特性(组合、继承、关联性、权值性、层叠性、重要性)1.样式的组合:把具有相同声明定义的选择符组合在一起,并用逗号隔开。-例如:段落元素p、单元格元素td和类c1可以使用相同样式: p,td,.c1{font-siz... 查看详情