day02(继承,重写,this,super,final,抽象类)
继承
概述:日常生活中儿女总会继承长辈的遗产,java语言也是。通过继承多种实物之间形成一种关系。
特点:
①一个类只能继承一个父类
②一个父类可以有多个子类
③可以多层继承(a类继承b类 C类继承a类)
成员变量特点:(就近原则)
①.如果子类没有需要的成员变量,子类可以使用父类的成员变量。
②.如果父类的成员变量私有,子类不能访问到。
成员方法特点:(就近原则)
①如果子类没有需要的成员方法,子类可以使用父类的成员方法。
②.如果父类的成员方法和成员变量私有,子类不能访问到。
内存图:
创建子类对象时 会加载父类,先对父类进行初始化
初始化顺序:
默认初始化------显示初始化-------构造方法初始化
创建对象也算是初始化
子父类的初始化(分层初始化)
先进行父类初始化,然后进行子类初始化。
在此过程不会创建父类对象
构造方法的执行顺序:
/*
* 继承中构造方法的执行顺序
* 在子父类中,创建子类对象,调用子类的构造方法,
* 在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造
* 为什么要调用父类构造?
* 因为需要给父类的成员变量初始化
* 肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码
*
* 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造
*/
public class ExtendsDemo6 {
public static void main(String[] args) {
//Die d = new Die();
Zi z = new Zi();
}
} class Die{
public Die() {
System.out.println("我是父类无参构造");
} public Die(int num) {
System.out.println("我是父类有参构造");
}
} class Zi extends Di {
public Zi() {
//super(1);
//super(); this(1);//不会再调用父类的无参构造了 System.out.println("我是子类无参构造");
} public Zi(int num) {
//会默认调用父类无参构造
System.out.println("我是子类有参构造");
}
}
重写
意义:因为父类的方法不能够满足子类的需求时,这时需要重写来达到需求。
注意事项:①.父类的方法不能私有
②不能被final修饰
③建议使用注解(@Override)来规范重写(方法名、返回值类型、参数列表完全相同)
和重载的区别:
重载的意义:相似的功能我们需要用相同的方法名来调用来提高代码的健壮性
方法名相同,参数列表不同(参数类型,参数个数,参数顺序满足至少一个),与返回值无关
this
意义:表示当前类的对象引用
作用:调用当前类的成员方法、成员变量、构造方法(this())。
super
意义:表示父类的对象引用
作用:调用父类的成员方法、成员变量、构造方法(this())。
final
final: 修饰符,可以用于修饰类、成员方法和成员变量
final所修饰的类:不能被继承,不能有子类
final所修饰的方法:不能被重写
final所修饰的变量:是不可以修改的,是常量
抽象类
抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法
抽象类:有抽象方法的类必须是抽象类
注意事项:
①抽象方法只能在抽象类里面
②抽象类和抽象方法必须被abstract修饰
③抽象类不能创建对象(不能实例化)但是有构造方法(给父类初始化使用)
④抽象类中可以有非抽象的方法
⑤抽象类和类的关系也是继承
⑥一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类
day02(继承,重写,this,super,final,抽象类)的更多相关文章
- Java面向对象之继承,方法重写,super关键字,员工类系列继承题
在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 继承的好处 1.继承的出现提高了代码的复用性,提高软件开发效率. 2.继承 ...
- java中static,super,final关键字辨析
1:static关键字 利:1)对对象的共享数据提供单独的空间存储. 2)修饰的方法可以直接被类名调用 弊:1)生命周期长. 2)访问出现限制(只能访问静态) 它可以有静态方法,静态类,静态变量 2: ...
- Python面向对象——重写与Super
1本文的意义 如果给已经存在的类添加新的行为,采用继承方案 如果改变已经存在类的行为,采用重写方案 2图解继承.重写与Super 注:上面代码层层关联.super()可以用到任何方法里进行调用,本文只 ...
- java方法重写和super关键字
//java方法重写和super关键字 //在继承中,其实就是子类定义了和父类同名的方法 //就是方法,属性都是相通的 //重写限制: //被子类重写的方法不能拥有比父类方法更加严格的权限 //sup ...
- Java 继承(extends)、抽象类(abstract)的特点用法原理(7)
Java 中的继承 继承: java中的抽象类用法原理: /* 当多个类中出现相同功能,但是功能主体不同, 这是可以进行向上抽取.这时,只抽取功能定义,而不抽取功能主体. 抽象:看不懂. 抽象类的特 ...
- python 继承中的super
python继承中子类访问父类的方法(包括__init__)主要有两种方法,一种是调用父类的未绑定方法,另一种是使用super(仅仅对于新式类),看下面的两个例子: #coding:utf-8 cla ...
- [修]python普通继承方式和super继承方式
[转]python普通继承方式和super继承方式 原文出自:http://www.360doc.com/content/13/0306/15/9934052_269664772.shtml 原文的错 ...
- 继承extends、super、this、方法重写overiding、final、代码块_DAY08
1:Math类的随机数(掌握) 类名调用静态方法. 包:java.lang 类:Math 方法:public static double random(): Java.lang包下的类是不用导包就可 ...
- 乐字节Java继承|方法重写、super和final关键字
大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...
随机推荐
- 关于Integer的比较,今天又犯了一个低级错误,记录下
今天查看以前所写的代码,看到有一部分被人改了,代码如下: if (orgId != organizationUpdateReq.getOrgId()) { //orgId的类型为Integer,org ...
- [转]谈谈前端渲染 VS 后端渲染
首先,预编译跟前后端没有关系,预编译一样可以用于后端渲染. 看看下面的测试时间,单位: ms 模板字符串: var s = '{{#datas}}{{name}} abcdefg {{type}} { ...
- 面向对象三大特性一一继承(inheritance)和组合(Composition)
记住2句话(常识),像个正常人思考! 1.“ is-a ”关系 用 继承! 学生是人,学生继承人这个类, 2. “has-a ”关系 用 组合!电脑有显卡,那么我们就在计算机类中增加显卡属性来复用显 ...
- 大型运输行业实战_day06_1_购票功能简单实现
1.添加购票按钮 对应的html代码 因为列表是js函数动态填充的,故添加按钮应该在js函数中,完整代码如下: /** * 注意在调用该函数时必须输入参数 * 查询+ 分页 * */ function ...
- HttpClient 4 和 HttpClient 3 超时
HttpClient 4: 连接超时: httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,6000 ...
- test5
## 前言 因为vs2010没有集成mvvmlight 所以想要使用mvvmlight的relaycomman需要引用dll 需要测试某个功能的时候,不能进行快带的集成 ## 引用mvvmlight ...
- webpack 构建同时适用于手机和电脑的调试服务器
plugins plugins: [ new HtmlWebpackPlugin({ // 使用模板同时生成 pc.html和mobile.html title: 'pc', filename: 'p ...
- JAVA——遍历
关于遍历,发现了个坑. 详见如下: package com.fxl.test; import java.util.ArrayList; import java.util.Iterator; impor ...
- luoguP1064 金明的预算方案 (有依赖的背包问题)
题目链接:https://www.luogu.org/problemnew/show/P1064 这是一个有依赖的背包问题,属于01背包的变式.这题还好,每个主件最多有2个附件,那么在对主件进行背包的 ...
- goim源码分析与二次开发-comet分析二
这篇就是完全原版了,作为一个开始,先介绍comet入口文件main.go 第一步是初始化配置,还有白名单.还有性能监口,整体来说入口代码简洁可读性很强 然后开始初始化监控,还有bukcet这里buck ...