当前位置:网站首页>继承day01
继承day01
2022-07-06 02:57:00 【大厂全栈】
1/*
继承: 向上抽取共性,把相同的内容定义在父类中
public class 子类 extends 父类 {
//成员变量 +成员方法 +构造方法
}
2.子类可以使用父类中除了private修饰的和构造方法以外的内容
*/
public class Demo01Extends {
public static void main(String[] args) {
//创建子类Teacher类的对象
Teacher t = new Teacher();
//给成员变量赋值
t.name = "响哥";
t.salary/birthday = 66666;
t.show(); //
}
}2
/*
继承中的成员变量访问特点
1.不重名的成员变量
(1)子类自己有: 优先使用子类自己的
(2)子类没有: 找父类
(3)注意: 子类可以找父类,但是父类不能找子类
2.重名的成员变量
(1)方法内部,直接写变量名
从方法内部开始向上找
方法内部有: 直接使用
方法内部没有: 向上找,本类的成员位置
本类的成员位置有: 直接使用
本类的成员位置没有: 向上找,父类的成员位置
(2)方法内部,直接写this.变量名
从本类的成员位置开始向上找
本类的成员位置有: 直接使用
本类的成员位置没有: 向上找,父类的成员位置
(3)方法内部,直接写super.变量名
从父类成员位置开始向上找
父类的成员位置有: 直接使用
父类的成员位置没有: 继续向上找
(4)总结:就近原则
this.变量名: 代表当前类的成员变量 this.numsuper.变量名: 父类的成员变量 super.num
*/
继承中成员方法的访问特点
1.子类自己有: 优先使用子类自己的
2.子类没有: 向上找父类
3.重名的方法(方法重写): 优先使用子类自己的方法重写
1.概念:
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),
会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
必要条件:方法名和参数列表必须相同
可选条件:返回值类型可以不一致(后面讲)
2.最简单的方法重写形式:
子类方法声明(定义方法的第一行)和父类方法声明一模一样
[email protected]注解:用来检测子类方法,是否是对父类方法的覆盖重写
4.与方法重载区分开:
方法重载作用: 是节约命名空间
方法重载要求: 方法名称相同,参数列表不同(类型不同,数量不同,多个不同类型的顺序不同)
5.方法重写快捷键:
ctrl + o --> 选择要重写的方法 --> ok直接调用父类的成员方法: super.成员方法名称(参数列表...)
//@Override
public void show(int num) {
System.out.println("Zi03...show...num..." + num);
}
@Override //不报错: 是对父类方法的重写,因为方法名称相同,参数列表也相同
public void show() {
System.out.println("Zi03...show...");
}
//在Zi03类中出现了两个show方法,不报错
//原因: 名称相同,参数列表不同,构成了重载关系public class NewPhone extends OldPhone {
@Override
public void show() {
//System.out.println("110来电...");
//显示电话号码,其实父类的show方法已经实现该功能,
//子类不用自己重新实现了,直接调用父类的功能
super.show();
System.out.println("显示归属地: 东莞...");
System.out.println("显示头像: ");
}
}
//满参构造
public Zi05(int num) {
/*
如果没有自己写super调用父类构造,
隐藏提供super()调用父类的空参构造
*/
//但是建议: 子空参 调用 父类空参
//但是建议: 子满参 调用 父类满参
super(num);
System.out.println("子满参...");
//super(num);//错误: 调用父类构造必须写在第一行
}//创建子类对象: 空参构造 Zi05 zi = new Zi05(); //创建子类对象: 满参构造 Zi05 zi2 = new Zi05(100);
/*
继承中构造方法的访问特点
1.构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的
2.子类继承父类,是为了使用父类的内容,
所以子类创建对象调用构造方法时,
必须先调用父类的构造方法,
完成父类成员的初始化动作,
子类才可以使用父类的成员,
super()表示调用父类的空参构造
3.子类的构造方法中如果没有手动给出super调用父类构造,
编译器默认提供一个super()调用父类的空参构造
4.super调用父类构造,只能写在第一句
5.构造方法可以重载,所以:
super(...):调用父类带参数的构造方法
//创建子类对象: 空参构造
Zi05 zi = new Zi05();
//创建子类对象: 满参构造
Zi05 zi2 = new Zi05(100);
super的用法:
1.super.成员变量名: 代表父类的成员变量
2.super.成员方法(参数列表...): 代表调用父类的成员方法
3.super(参数列表...): 代表调用父类的构造方法
this的用法:
1.this.成员变量名: 代表本类自己的成员变量(自己没有找父类)
2.this.成员方法(参数列表...): 代表本类自己的成员方法(自己没有找父类)
3.this(参数列表...): 代表调用本类自己的其它构造方法 ---后面讲
*/public class Fu05 {
private int num;
//空参构造
public Fu05(){
System.out.println("父空参...");
}
//满参构造
public Fu05(int num) {
System.out.println("父满参...");
this.num = num;
}
//get和set方法
public void setNum(int num) {
this.num = num;//
super(num);
public int getNum() {
return num;
}
}/*
如果没有自己写super调用父类构造,
隐藏提供super()调用父类的空参构造
*/
//但是建议: 子空参 调用 父类空参
//但是建议: 子满参 调用 父类满参/*
定义父类员工Employee类
1.所有成员变量private修饰
2.提供空参/满参构造方法
3.提供get/set方法
4 //特有方法:
*/
//创建子类Teacher类的对象: 满参构造
// Teacher t =
// new Teacher("响哥",18,66666,33333);
//
// //调用成员方法
// t.show();
// t.teaching();
// System.out.println("-----------");
//
// //创建子类Manager类的对象: 空参构造
// Manager m = new Manager();
//
// //给成员变量赋值
// m.setName("玲姐");
// m.setAge(16);
// m.setSalary(88888);
public class Employee {
// private成员变量
//成员方法: 展示信息
//2.提供空参构造方法
//2.提供空参构造方法
//3.提供get/set方法
}
/*
类的继承特点
1.Java只支持单继承,不支持多继承。
//Java中的类可以多层继承爷父子
2.Java支持多层继承(继承体系)。
3.所有的类都直接或者间接继承了Object类,Object类是所有类的最终父类。
*/
//错误: 一个类只能直接继承一个父类public abstract class Animal {
//成员变量
//空参构造
//满参构造
//展示信息的方法
//抽象方法: 吃
//抽象方法: 睡
//get和set方法
}public abstract class Animal {
//抽象方法: 吃
public abstract void eat();
//抽象方法: 睡
public abstract void sleep();
}
/*
抽象父类和之前普通类的定义的区别?
1.不能直接创建对象
2.内部可以定义抽象方法
*//*
抽象:
2.抽象类中抽象方法存在的意义:强制要求子类必须具备的能力
3.抽象类的定义格式:
public abstract class 类名 {
...
}
4.抽象方法的定义格式:
//错误: 不能直接创建抽象类的对象 //Animal a = new Animal(); //创建Cat类的对象 Cat cat = new Cat(); //子类对象调用成员方法 cat.eat(); cat.sleep();
修饰符 abstract 返回值类型 方法名称(参数列表...);
注意:
(1)和以前定义方法一样,但是去掉{},添加abstract关键字
(2)返回值类型和参数列表根据需求确定
(3)含有抽象方法的类,必须定义为抽象类,但是抽象类中不一定含有抽象方法
5.抽象类的使用
(1)不能直接创建抽象类的对象
(2)定义子类,继承抽象父类
(3)子类中覆盖重写抽象父类中的所有抽象方法
去掉abstract关键字,添加{}
快捷键: ctrl + i
(4)创建子类对象
(5)子类对象调用方法
*///-----------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
/*
抽象类的注意事项:
(3)含有抽象方法的类,必须定义为抽象类,但是抽象类中不一定含有抽象方法
4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类 看: MyAbstractClass
1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象
2.抽象类中,必须有构造方法,是供子类创建对象时,初始化父类成员使用的
//-----------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
*/
//错误: 不能直接创建抽象类的对象
//Animal a = new Animal();
//创建Cat类的对象: 空参构造
Cat cat = new Cat();
//调用set方法给成员变量赋值
cat.setName("小花");
cat.setWeight(10); 问题:
Animal中有两个抽象方法eat和sleep,但是对应当前子类而言,
只覆盖重写了一个抽象方法eat,相当于子类自己有个抽象方法sleep
当前子类必须定义为抽象类
public abstract void sleep();边栏推荐
- 主数据管理(MDM)的成熟度
- 【若依(ruoyi)】ztree 自定义图标(iconSkin 属性)
- Follow the mouse's angle and keyboard events
- 【Unity3D】GUI控件
- Jenkins basic knowledge ----- detailed explanation of 03pipeline code
- How to improve the enthusiasm of consumers when the member points marketing system is operated?
- Which ecology is better, such as Mi family, graffiti, hilink, zhiting, etc? Analysis of five mainstream smart brands
- Universal crud interface
- Redis skip table
- #PAT#day10
猜你喜欢

Referenceerror: primordials is not defined error resolution

PMP每日一练 | 考试不迷路-7.5

JS regular filtering and adding image prefixes in rich text

Pure QT version of Chinese chess: realize two-man, man-machine and network games

codeforces每日5題(均1700)-第六天

"Hands on learning in depth" Chapter 2 - preparatory knowledge_ 2.5 automatic differentiation_ Learning thinking and exercise answers

Which ecology is better, such as Mi family, graffiti, hilink, zhiting, etc? Analysis of five mainstream smart brands

全国大学生信息安全赛创新实践赛初赛---misc(永恒的夜)

米家、涂鸦、Hilink、智汀等生态哪家强?5大主流智能品牌分析
![[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 8](/img/16/33f5623625ba817e6e022b5cb7ff5d.jpg)
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 8
随机推荐
[unity3d] GUI control
技术分享 | undo 太大了怎么办
Differences and usage scenarios between TCP and UDP
Apt installation ZABBIX
【指针训练——八道题】
Fault analysis | analysis of an example of MySQL running out of host memory
Communication between microservices
2.11 simulation summary
主数据管理(MDM)的成熟度
[ruoyi] set theme style
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 19
Misc (eternal night), the preliminary competition of the innovation practice competition of the National College Students' information security competition
不赚钱的科大讯飞,投资价值该怎么看?
Codeworks 5 questions per day (1700 average) - day 6
Force buckle 146 LRU cache
【若依(ruoyi)】启用迷你导航栏
RobotFramework入门(一)简要介绍及使用
Solution: attributeerror: 'STR' object has no attribute 'decode‘
How does yyds dry inventory deal with repeated messages in the consumption process?
[Chongqing Guangdong education] higher mathematics I reference materials of Southwest Petroleum University