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 ...
随机推荐
- JS 点击复制
一.原理分析 浏览器提供了 copy 命令 ,可以复制选中的内容 document.execCommand("copy") 如果是输入框,可以通过 select() 方法,选中输入 ...
- 第二章 C#语法基础(2.1 C#语言的数据类型一)
C#的数据类型 [案例]本案例实现3位评委给一位选手评分,通过键盘输入各位评委的打分,通过屏幕输出该选手的平均分. [案例目的] (1)掌握变量的定义方式; (2)掌握常用的数据类型; (3)掌握数据 ...
- C# 流总结
前言 本篇文章简单总结了在C#编程中经常会用到的一些流.比如说FileStream.MemoryStream. BufferedStream. NetWorkStream. StreamReader/ ...
- Java_EE面试题
Java_EE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.什么是Servlet? Servlet是用来处理客户端请求并产生动态网页内容的Java类.Servlet主要是用来处理或者是存储 ...
- bootstrapValidator关于js,jquery动态赋值不触发验证(不能捕获“程序赋值事件”)解决办法
//触发oninput事件 //propertychange 兼容ie678 $('#captainName').on('input propertychange', function() { }); ...
- 怎样使用PL/SQL在不安装oracle 客户端的情况下使用oracle数据库
在网上查了好多这方面的例子,但是似乎说的都不准确,在咨询朋友后终于实现了本机不安装oracle 的情况下,在windows系统上实现连接服务器上的数据库,现在贴出来与大家共享. 首先,我们需要一个PL ...
- 查看mysql的版本号
查看mysql的版本号 1.1 在命令行登录mysql,即可看到mysql的版本号 [root@heyong ~]# mysql -uroot -p Enter password: Welcome t ...
- nginx的启动与停止
参考 :http://www.cnblogs.com/codingcloud/p/5095066.html 启动: /usr/local/nginx/sbin/nginx -c /usr/local/ ...
- Kafka 配置安装
1.从官网下载安装包 http://kafka.apache.org/downloads2.上传到01虚拟机,解压3.进入安装目录下的config目录4.对server.properties进行配置 ...
- SQL查数据库有哪些触发器,存储过程...
select name from sysobjects where xtype='TR' --所有触发器select name from sysobjects where xtype='P' --所有 ...