子类与父类

  子类

class  子类名  extends  父类名{
    .......
}

  类的树形结构

子类的继承性

  子类和父类在同一包中的继承性

子类继承了父类不是private的成员属性和成员方法

    子类和父类在同一包中的继承性

//子类中只继承protected和public的成员变量和成员方法

    继承关系的UML

子类与对象

//当使用子类构造方法创建对象的时候,不仅子类声明中的成员变量被分配了内存,而且父类的成员变量也分配了内存空间

成员变量的隐藏和方法重写

  成员变量的隐藏:

/*
*当子类的成员变量和父类的成员变量出现同名时(变量类型可以不同),这样子类就会隐藏
*所继承的成员变量
*/

  特点:

/*
*之类对象已经自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量
*子类对象仍然可以调用从父类继承的方法操作被子类隐藏的成员变量,也就是说,子类继承的
*方法所操作的成员变量一定是被子类继承或者隐藏的成员变量
*/
/*
子类继承的方法只能操作子类继承和隐藏的成员变量
子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量(若要操作需要使用super关键字操作子类隐藏的成员变量)
*/

    方法重写

子类通过重写可以隐藏已继承的方法(方法重写又称方法覆盖)
重写规则:
1.如果子类可以继承父类的某个方法,这个子类就有权利重写这个方法。
2.子类的方法名字,返回类型,参数类型个数都要和父类的一致才算是重写
3.@Override
/*
重写的目的:
隐藏继承的方法,增加拓展功能
*/
/*
注意事项:
重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限
高到低:public--->protected--->友好的--->private */

super关键字

/*super代表指向父类

子类一旦隐藏继承的成员变量/方法,那么子类创建的对象就不再拥有该变量/方法,该变量将归关键字super所有,可以使用super来访问

*/
/*
*在加载子类的时候回 super()调用父类的默认构造方法
*/

final关键字

/*
*fina可以修饰类,成员变量,方法中局部变量
*/
final class A{ } /*
final 修饰的类不能被继承,不能有子类;
*/ //final 修饰方法,那么这个方法不允许子类重写,也就是说,不允许子类隐藏可以继承的final方法老老实实继承,不许任何修改 public final void method(){ } //final 修饰的变量,就是常量,运行期间不允许修改

对象的上转型对象

Animal   a;
a=new Tiger();
//或者
Animal a;
Tiger b=new Tiger();
a=b; /*
* 这时就称a是对象b的上转型对象
*/

  特点:

/*
上转对象不能操作子类新增的成员变量/方法(失掉这一部分属性)
上转对象可以访问子类继承或者隐藏的成员变量/方法,
*/

继承与多态

/*

动态性:指父类的某个方法被父类的某个方法被子类重写时,可以产生自己的功能行为

*/

abstract类和abstract方法

/*
用关键字abstract修饰的类称为abstract类(抽象类)
*/
abstract class A{ } /*
使用关键字abstract修饰的方法称为abstract方法(抽象方法)
*/
abstract int min(int x,int y); abstract class A{//抽象类
abstract int min(int x,int y);//抽象方法
int max(int x,int y){
return x<y?y:x;
}
}

特点:

/*
1.abstract类 不能用new运算符创建对象
继承抽象类的类必须重写抽象类的抽象方法(不能使用abstract和final修饰同一个方法) 2.abstract类中可以有abstract方法 3.abstract的子类
如果一个非抽象类继承该抽象类,必须重写父类的抽象方法(给出方法体),如果是抽象类继承抽象类则,可重写或者继承 4.abstract类的对象作上转型的对象
抽象类可以 抽象出重要的行为标准,该标准用抽象方法来表示。
抽象类声明的对象可以成为其子类的对象的上转型对象 */

面向抽象编程

在程序设计时,经常使用抽象类,原因是:abstract类只是关心操作,而不关心这些操作具体的实现的细节,

开-闭原则

/*
让设计的系统对扩展开放,对修改关闭
*/

小结

Java基础知识笔记第五章:子类与继承的更多相关文章

  1. Java基础知识笔记第七章:内部类和异常类

    内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...

  2. Java基础知识笔记(五:多线程的同步问题)

    编写多线程程序往往是为了提高资源的利用率,或者提高程序的运行效率,或者更好地监控程序的运行过程等.多线程同步处理的目的是为了让多个线程协调地并发工作.对多线程进行同步处理可以通过同步方法和同步语句块实 ...

  3. Java基础知识笔记第六章:接口

    接口 /* 使用关键字interface来定义一个接口.接口的定义和类的定义很相似,分为接口声明和接口体 */ interface Printable{ final int max=100; void ...

  4. Java基础知识笔记第四章:类和对象

      编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 class Person{ ....... } class 植物{ ....... } 类体 类使用 ...

  5. Java基础知识笔记第三章:运算符表达式语句

    算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...

  6. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  7. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  8. JAVA基础知识笔记

    1.类只能用Public修饰,不能使用protected.private修饰.也可以不加修饰符,称做友好类. 2.类的实体元素包含成员变量和方法的定义,成员变量分为实例变量和类变量(static修饰的 ...

  9. java第五章 子类与继承

    5.1子类与父类 1   java不支持多重继承,即一个子类不可以从多个父类中同时继承,而C++中可以. 人们习惯地称子类与父类的关系式“is—a”的关系 2   再类的声明过程中,通过关键字exte ...

随机推荐

  1. 吴裕雄 python 机器学习——半监督学习标准迭代式标记传播算法LabelPropagation模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import metrics from sklearn import d ...

  2. oracle-数据库被注入恶意攻击程序的案例恢复

    问题描述: Oracle数据库由于重启之后无法正常启动,tab$被清空(ORA-600 16703故障解析—tab$表被清空),导致数据库启动异常 ORA-600 16703报错 一.检测方法: 如下 ...

  3. ftrace使用

    前段时间遇到个问题,有个后继音频数据处理线程调度不及时导致音频输出延迟,音视频不同步. 因此从系统上入手,采用ftrace进行debug,来看有哪些线程会去抢占音频数据处理线程. ftrace 提供了 ...

  4. 【Python实现图片验证码】

    "```python import base64 import random from PIL import Image from PIL import ImageDraw # 画笔对象 f ...

  5. python连接oracle数据库报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "解决方案

    操作系统,python3.5, oracle_11, 均为64位:plsql 正常连接. 也顺利安装了cx_oracle 6.3,但是python进行连接的时候就会报错"DatabaseEr ...

  6. .net core 删除主表,同时删除子表

    前提条件: 代码懒加载, 数据库有外键关联 var entity = context.主表.Include(o => o.子表).FirstOrDefault(p => p.Id == i ...

  7. uniGUI之FDQuery(28)

    1]基本设置FDQuery1.Connection2]执行查询SQL语句3]执行 非查询SQL语句4]返回所有数据 和所有 列名 1]基本设置FDQuery1.Connection 一定要 放一个   ...

  8. 激活windows系统

    1.下载KMS 2.如图所示,双击KMSpico看是否正常运行 3.双击KMSpico正常后出现以下界面 4.点击红色按钮 5.等自动退出就是激活成功,大概半年需要激活一次

  9. Django框架之ORM的相关操作之多对多三种方式(五)

    在之前的博客中已经讲述了使用ORM的多对多关系表,现在进行总结一下: 1.ORM自动帮助我们创建第三张表 2.手动创建第三张表,第三张表使用ForeignKey指向其他的两张表关联起来 3.手动创建第 ...

  10. php常用函数归纳

    php常用函数归纳: /** * 截取指定长度的字符 * @param type $string 内容 * @param type $start 开始 * @param type $length 长度 ...