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 ...
随机推荐
-
bzoj1208
1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7589 Solved: 3009[Submit][Sta ...
-
UML: 部署图
说部署图之前,先看看某24小时便利店管理系统的网络拓扑结构图: 这个图描述了本系统的整体物理结构,从该图我们可以得到以下信息:1.该便利店集团有总部和多个门店,总部管理财务.仓库.采购等事宜.2.二级 ...
-
Wiki知识介绍
Wiki简介 Wiki一词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”的意思,被译为“维基”或“维客”.一种多人协作的写作工具.Wiki站点可以有多人(甚至任何访问者)维护, ...
-
Android WebView 开发详解(一)
转载请注明出处 http://blog.csdn.net/typename/article/details/39030091 powered by meichal zhao 概览: Android ...
-
iOS 状态栏、导航栏、工具栏、选项卡大小
1.状态栏状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注意,两倍高度的状态栏在好像只能在纵向的模式下使用.如下图用户可以隐藏状态栏,也可以将状态栏设置为灰色,黑色或者半透明的黑 ...
-
MATLAB编译器
1. mcc filename.cpp 或者mcc filename.c 可以将cpp或者c源程序文件,编译为filename.mexw32(32位系统)或者filename.mexw64(64位系统 ...
-
JavaScriptCore全面解析 (下篇)
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者,现就职于腾讯. 接JavaScript ...
-
【一天一道LeetCode】#98. Validate Binary Search Tree
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
-
微信公众号 几种移动端UI框架介绍
微信公众号开发,主要是移动端网页的页面开发,在这里推荐3个移动端UI框架:WeUI.SUI和Mint UI. 1. WeUI 1.1 WeUI WeUI是微信官方设计团队为微信 Web 开发量身设计, ...
-
LoRa---官方例程移植
SX1278芯片上移植Semtech官方PING-PONG例程 移植环境:keil5.20 硬件平台:stm32f051+sx1278 1.下载源码:Semtech官网下载最新例程链接:http:// ...