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语法基础(十一)继承的更多相关文章

  1. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  2. JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

    类的继承 Java只支持单继承,不允许多重继承- 一个子类只能有一个父类- 一个父类可以派生出多个子类这里写图片描述子类继承了父类,就继承了父类的方法和属性.在子类中,可以使用父类中定义的方法和属性, ...

  3. Java语法基础DayFive

    一.继承 1.格式:class 子类 extends 父类 2.好处:提高代码的复用性:让类与类之间产生了关系,是多态的前提. 3.弊端: (1)类的耦合性增强了,而开发的原则是高内聚,低耦合.内聚是 ...

  4. java语法基础(四)

    继承 继承概述 继承是面向对象语言的三大基本特性(封装,继承,多态)之一. 一个类可以继承另外一个类,继承的类称为子类(也可以叫派生类),被继承的类称为父类(或者也叫基类,超类). 通过继承,子类可以 ...

  5. Java语法基础常见疑惑解答

    1. 类是java的最小单位,java的程序必须在类中才能运行 2. java函数加不加static有何不同 java中声明为static的方法称为静态方法或类方法.静态方法可以直接调用静态方法,访问 ...

  6. Java语法基础学习DaySeven

    ---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean          byte——Byte ...

  7. Java语法基础学习DaySix

    一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...

  8. java语法基础(三)

    类和对象 面向对象语言概述 java是一种面向对象的语言,什么是面向对象的语言? 要搞清楚什么是面向对象语言,我们需要相对的了解一下面向过程的语言. java入门阶段,我们又给大家说过一些语言的分类, ...

  9. java语法基础(一)

    这个是自己前两年做java视频教程时候的课件.感兴趣的同学可以参考下. 这里是纯粹的语法行总结. editplus的使用 选择项目目录 打开editplus 左侧目录导航栏 可以打开盘符,文件夹 可以 ...

  10. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

随机推荐

  1. eclipse中mybatis自动生成插件使用

    对于使用Mybatis的开发者来说, 使用mybatis generator来生成mapper 以及配置文件, 可以大大简化工作, mybatis generator有多种工作方式, eclipse插 ...

  2. SQL 查询当天,本月,本周的记录

    SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111)   ORDE ...

  3. git项目提交后执行添加忽略操作

    需要删除文件暂存区中的忽略文件 git rm -r --cached 需要忽略的已提交文件或文件夹 eg: git rm -r --cached target/

  4. C语言----管道

    一.管道的概念 管道是一种队列类型的数据结构,它的数据从一端输入,另一端输出.管道最常见的应用是连接两个进程的输入输出,即把一个进程的输出编程另一个进程的输入.shell中存在专门的管道运算符&quo ...

  5. 学习笔记之Machine Learning Crash Course | Google Developers

    Machine Learning Crash Course  |  Google Developers https://developers.google.com/machine-learning/c ...

  6. 知识点:synchronized 原理分析

    synchronized 原理分析 1. synchronized 介绍 在并发程序中,这个关键字可能是出现频率最高的一个字段,他可以避免多线程中的安全问题,对代码进行同步.同步的方式其实就是隐式的加 ...

  7. 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权限

    CRM 2016 安装 为运行Microsoft Dynamics CRM 应用程序指定账户没有性能计数器权限 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权 ...

  8. 事务、事务特性、事务隔离级别、spring事务传播特性

    事务.事务特性.事务隔离级别.spring事务传播特性   1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功, ...

  9. IDLE的GUI交互模式下完美清屏

    IDLE的GUI交互模式下完美清屏==============================================================================1.首先把 ...

  10. <记录> axios 模拟表单提交数据

    ajax 可以通过 FormData 对象模拟表单提交数据 第一种方式:自定义FormData信息 //创建formData对象 var formData = new FormData(); //添加 ...