当前位置:网站首页>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
}
}边栏推荐
- DOM Clobbering的原理及应用
- ERC721标准与加密猫
- Error when using sourcemap for reporting an error: Can‘t resolve original location of error.
- 基于激励的需求响应计划下弹性微电网的短期可靠性和经济性评估(Matlab代码实现)
- PHP代码审计7—文件上传漏洞
- Flask framework implementations registered encryption, a Flask enterprise class learning 】 【
- The Industrial Metaverse Brings Changes to Industry
- 22/8/4 记忆化搜索+博弈论
- Google Earth Engine APP - one-click online viewing of global images from 1984 to this year and loading an image analysis at the same time
- Nintendo won't launch any new hardware until March 2023, report says
猜你喜欢
随机推荐
Scala104 - Built-in datetime functions for Spark.sql
数仓相关,总结
Matlab drawing 1
npm配置国内镜像(淘宝镜像)
Route lazy loading
PHP代码审计7—文件上传漏洞
YOLOv7-Pose尝鲜,基于YOLOv7的关键点模型测评
Global electronics demand slows: Samsung's Vietnam plant significantly reduces capacity
leetcode 14. 最长公共前缀
如何封装 svg
EasyCVR如何通过接口调用设备录像的倍速回放?
方法的重写
【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
MMDetection 使用示例:从入门到出门
Iptables防火墙基础知识介绍
测试工程师如何突破职业瓶颈?
LVS负载均衡群集之原理叙述
使用.NET简单实现一个Redis的高性能克隆版(二)
CAN光纤转换器CAN光端机解决消防火灾报警
limux入门3—磁盘与分区管理









