Java12-java语法基础(十一)继承
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关键字?
判断对象是否是类的实例
Java12-java语法基础(十一)继承的更多相关文章
- Java语法基础(1)
Java语法基础(1) 1. Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...
- JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]
类的继承 Java只支持单继承,不允许多重继承- 一个子类只能有一个父类- 一个父类可以派生出多个子类这里写图片描述子类继承了父类,就继承了父类的方法和属性.在子类中,可以使用父类中定义的方法和属性, ...
- Java语法基础DayFive
一.继承 1.格式:class 子类 extends 父类 2.好处:提高代码的复用性:让类与类之间产生了关系,是多态的前提. 3.弊端: (1)类的耦合性增强了,而开发的原则是高内聚,低耦合.内聚是 ...
- java语法基础(四)
继承 继承概述 继承是面向对象语言的三大基本特性(封装,继承,多态)之一. 一个类可以继承另外一个类,继承的类称为子类(也可以叫派生类),被继承的类称为父类(或者也叫基类,超类). 通过继承,子类可以 ...
- Java语法基础常见疑惑解答
1. 类是java的最小单位,java的程序必须在类中才能运行 2. java函数加不加static有何不同 java中声明为static的方法称为静态方法或类方法.静态方法可以直接调用静态方法,访问 ...
- Java语法基础学习DaySeven
---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean byte——Byte ...
- Java语法基础学习DaySix
一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...
- java语法基础(三)
类和对象 面向对象语言概述 java是一种面向对象的语言,什么是面向对象的语言? 要搞清楚什么是面向对象语言,我们需要相对的了解一下面向过程的语言. java入门阶段,我们又给大家说过一些语言的分类, ...
- java语法基础(一)
这个是自己前两年做java视频教程时候的课件.感兴趣的同学可以参考下. 这里是纯粹的语法行总结. editplus的使用 选择项目目录 打开editplus 左侧目录导航栏 可以打开盘符,文件夹 可以 ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
随机推荐
- InnoDB存储引擎文件
InnoDB存储引擎文件 MySQL数据库包括数据库本身的文件和存储引擎文件.数据库自身的文件由参数文件(my.cnf).错误日志文件.慢查询日志文件.查询日志文件.二进制日志文件.套接字文件.pid ...
- 2018年,Java程序员转型大数据开发,是不是一个好选择?
近日网上有一篇关于Java程序员职场生存现状的文章“2017年 Java 程序员,风光背后的危机”,在Java程序员圈子里引起了广泛关注和热议. 2017年,Java 程序员面临更加激烈的竞争. 不得 ...
- JavaBean是什么,POJO是什么
参考:https://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly https://stackoverflow.com/ ...
- 自己遇到的ajax调用ashx文件无法获取返回值的一种情况
无法获取返回值的ashx文件大致如下: public void ProcessRequest (HttpContext context) { context.Response.ContentType ...
- JAVA web端JS下载excel文件
JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...
- # 20175227 2018-2019-2 《Java程序设计》第二周学习总结
20175227 2018-2019-2 <Java程序设计>第二周学习总结 教材学习内容总结 1. 根据蓝墨云上的学习视频,自学第二.三章知识,并自行编译调试书上程序. 2. 第二章主要 ...
- 1816647 - Error "Data file of SAP Note is incomplete" uploading a note in SNOTE
ymptom When uploading an SAP Note in transaction SNOTE you receive the error "Data file of SAP ...
- Maven CXF wsdl2java XMLGregorianCalendar类型更改
jaxb-bindings.xml配置: <?xml version="1.0" encoding="UTF-8"?> <jaxb:bindi ...
- spring boot 错误处理之深度历险
今天终于把 boot 的异常处理完全研究透了: boot提供了很多错误的处理工作.默认情况下,我们会看到一个whiteLabel(白标)的页面. 这个可能不是我们所需.因此我们需要定制.我于是做了个深 ...
- python——字符串问题总结
转义符r/R使用: print (r'\n') print (R'\n') 输出: \n \n 不受转义符\n影响 python字符串格式化: print ("我叫 %s 今年 %d 岁!& ...