当前位置:网站首页>Day018 Inheritance
Day018 Inheritance
2022-08-04 18:34:00 【Strange year】
目录
1、继承的使用
(1)使用继承
① 编写父类
[访问修饰符] class Pet {
//公共的属性和方法
}
②编写子类,继承父类
[访问修饰符] class Dog extends Pet {
//子类特有的属性和方法
}
注意:继承是Java中实现代码重用的重要手段之一.java中只支持单根继承,即一个类只能有一个直接父类.
2、继承的理解
(1)子类访问父类
① 访问父类构造方法
super();
super(name);
② 访问父类属性
super.name;
③ 访问父类方法
super.print()
注意:
(1)使用super关键字,super代表父类对象
(2)在子类构造方法中调用且必须是第一句
(3)不可以访问父类中定义为private的属性和方法
小结:
super关键字来访问父类的成员
super只能出现在子类的方法和构造方法中;
super调用构造方法时,只能是第一句;
super不能访问父类的private成员.
2、继承条件下的构造方法
2.1、继承条件下构造方法的调用规则 
2.2 子类继承父类的什么

2.3 Does the subclass inherit all the resources of the parent class??

2.4 小结

3、实例
创建一个Pet类作为父类
public class Pet {
private String name;
private int health;
private int love;
//添加构造方法
public Pet() {
}
public Pet(String name, int health, int love) {
this.name = name;
this.health = health;
this.love = love;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public void print(){
System.out.println("宠物信息");
System.out.println("昵称:"+this.getName()+"\n健康值:"+this.getHealth()+"\n亲密度:"+this.getLove()+"颜色:");
}
}
创建一个Dog类作为子类
public class Dog extends Pet {
//strain属性是DogAttributes unique to a class,None of the other classes
private String strain;
public Dog() {
}
public Dog(String name, int health, int love, String strain) {
super(name, health, love);
this.strain = strain;
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
}创建一个Cat类作为子类
public class Cat extends Pet {
// 定义Cat类独有的属性
private String color;
public Cat() {
super();// 调用父类Pet类里的无参构造方法
}
public Cat(String name, int health, int love, String color) {
super(name, health, love);
this.color = color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}创建一个Penguin作为子类
public class Penguin {
private String name;
private int health;
private int love;
private String sex;
public Penguin() {
}
public Penguin(String name, int health, int love, String sex) {
this.name = name;
this.health = health;
this.love = love;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void print() {
System.out.println("宠物信息:昵称:" + this.getName() + ",健康值:"
+ this.getHealth() + ",亲密度:" + this.getLove());
}
}Finally create a test class for testing
public class Test {
public static void main(String[] args) {
// 创建Dog类对象
Dog dog1 = new Dog("旺财", 99, 99, "金毛");
//在Dog类中没有setName()方法,但是Dog类对象dog1是可以调用,因为Dog类继承了Pet类,所以dog1可以调用父类Pet类里的setName()方法
dog1.setName("来福");
dog1.print();
//创建Penguin类对象
Penguin penguin1 = new Penguin("QQ", 98, 100, "公");
penguin1.setHealth(100);
penguin1.print();
//创建Cat类对象
Cat cat1 = new Cat("Tom", 100, 80, "蓝色");
cat1.print();
//hashCode()在Cat里没有、在Cat的父类Pet类里也没有,hashCode()方法存在于Object类中,Object类是Pet类的默认父类,所以Cat类对象可以使用Pet类里的方法,也可以使用Pet类的父类里的方法
//声明一个类,如果没有指定其父类是谁,系统会让此类默认去继承Object类
int num =cat1.hashCode();
System.out.println(num);//1694203642
}
}边栏推荐
猜你喜欢

如何进行自动化测试?

企业即时通讯软件有哪些功能?对企业有什么帮助?

EasyCVR calls the cloud recording API and returns an error and no recording file is generated. What is the reason?

力扣学习---0804

How does EasyCVR call the double-speed playback of device recording through the interface?

智能视频监控平台EasyCVR如何使用接口批量导出iframe地址?

Flask框架实现注册加密功能详解【Flask企业课学习】

网站设计师:Nicepage 4.15 Crack By Xacker

CPU突然飙高系统反应慢,是怎么导致的?有什么办法排查?

npm配置国内镜像(淘宝镜像)
随机推荐
Flask framework implementations registered encryption, a Flask enterprise class learning 】 【
网站设计师:Nicepage 4.15 Crack By Xacker
dotnet core 使用 CoreRT 将程序编译为 Native 程序
MySQL安装教程(详细)
部署LVS-DR群集
Iptables防火墙基础知识介绍
如何给MySQL添加自定义语法 ?
自己经常使用的三种调试:Pycharm、Vscode、pdb调试
袋鼠云思枢:数驹DTengine,助力企业构建高效的流批一体数据湖计算平台
谁能解答?从mysql的binlog读取数据到kafka,但是数据类型有Insert,updata,
Error when using sourcemap for reporting an error: Can‘t resolve original location of error.
【注册荣耀开发者】赢【荣耀70】手机
Scala105-Spark.sql中collect_list用法
【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
PHP代码审计7—文件上传漏洞
不论你是大众,科班和非科班,我这边整理很久,总结出的学习路线,还不快卷起来
合宙Cat1 4G模块Air724UG配置RNDIS网卡或PPP拨号,通过RNDIS网卡使开发板上网(以RV1126/1109开发板为例)
#yyds干货盘点# 面试必刷TOP101:链表相加(二)
防火墙基础之防火墙做出口设备安全防护
Understanding of margin collapse and coincidence