Java基础知识笔记第五章:子类与继承
子类与父类
子类
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基础知识笔记第五章:子类与继承的更多相关文章
- Java基础知识笔记第七章:内部类和异常类
内部类 /* *Java支持在一个类中定义另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类 */ 重要关系: /* *1.内部类的外嵌类在内部类中仍然有效,内部类的方法也可以外嵌类的方 ...
- Java基础知识笔记(五:多线程的同步问题)
编写多线程程序往往是为了提高资源的利用率,或者提高程序的运行效率,或者更好地监控程序的运行过程等.多线程同步处理的目的是为了让多个线程协调地并发工作.对多线程进行同步处理可以通过同步方法和同步语句块实 ...
- Java基础知识笔记第六章:接口
接口 /* 使用关键字interface来定义一个接口.接口的定义和类的定义很相似,分为接口声明和接口体 */ interface Printable{ final int max=100; void ...
- Java基础知识笔记第四章:类和对象
编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 class Person{ ....... } class 植物{ ....... } 类体 类使用 ...
- Java基础知识笔记第三章:运算符表达式语句
算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...
- java基础知识-笔记整理
1.查看已安装jdk文件路径 CMD输入java -verbose. 2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- JAVA基础知识笔记
1.类只能用Public修饰,不能使用protected.private修饰.也可以不加修饰符,称做友好类. 2.类的实体元素包含成员变量和方法的定义,成员变量分为实例变量和类变量(static修饰的 ...
- java第五章 子类与继承
5.1子类与父类 1 java不支持多重继承,即一个子类不可以从多个父类中同时继承,而C++中可以. 人们习惯地称子类与父类的关系式“is—a”的关系 2 再类的声明过程中,通过关键字exte ...
随机推荐
- 消息中间件技术 - 浅谈mqtt协议及其实现
作者:carter(佘虎),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 1.1概念 MQTT(MQ Telemetry ...
- selenium+python自动化用例登陆界面模板
一.基本逻辑 1.自动填写用户名和密码登录成功后跳转到相应页面 2.验证相应页面的url与给定的url是否一致,如果一致则测试通过,如果不一致则不通过 二.以jenkins登陆界面为例,代码如下 fr ...
- Subroutine 子程序 Perl 第四章
子程序的定义是全局的,不需要事先声明.若重复定义子程序,后面的覆盖前面的. sub marine { $n +=1; print " Hello ,sailor number $_ ! &q ...
- 题解 SP7579 YOKOF - Power Calculus
SP7579 YOKOF - Power Calculus 迭代加深搜索 DFS每次选定一个分支,不断深入,直至到达递归边界才回溯.这种策略带有一定的缺陷.试想以下情况:搜索树每个节点的分支数目非常多 ...
- 01-书城http状态405-此url不支持http方法get
错误: http状态405-此url不支持http方法get 原因:
- PAT 1013 Battle Over Cities (dfs求连通分量)
It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...
- 科技 - 5G
科技 - 5G 一.5G的概念 第五代移动通信技术(英语:5th generation mobile networks或5th generation wireless systems.5th-Gene ...
- AbstractQueuedSynchronizer(AQS) 超详细原理解析
java.util.concurrent包中很多类都依赖于这个类AbstractQueuedSynchronizer所提供的队列式的同步器,比如说常用的ReentranLock,Semaphore和C ...
- div 悬浮
一个小需求,鼠标移动一个产品那, 显示这个产品的具体信息 代码如下: <a href="javascript:void(0);" onclick="frameSea ...
- maven 配置环境变量后报错jdk版本不符
不需要再cmd 输入java -version,因为环境变量里配置的不一定是cmd显示版本,直接看环境变量改成maven要求的jdk版本即可.
