当前位置:网站首页>Day018 继承
Day018 继承
2022-08-04 18:24:00 【陌 年】
目录
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 子类继承父类的所有资源吗?
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属性是Dog类中独有的属性,其他类中没有
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());
}
}
最后创建一个测试类进行测试
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
}
}
边栏推荐
猜你喜欢
从-99打造Sentinel高可用集群限流中间件
PHP代码审计8—SSRF 漏洞
The Industrial Metaverse Brings Changes to Industry
Short-term reliability and economic evaluation of resilient microgrids under incentive-based demand response programs (Matlab code implementation)
Create Sentinel high-availability cluster current limiting middleware from -99
群友求助,一周没有搞定的需求,3分钟就解决了?
leetcode 13. 罗马数字转整数
解决错误:The package-lock.json file was created with an old version of npm
LVS负载均衡群集之原理叙述
EasyCVR调用云端录像API接口返回错误且无录像文件生成,是什么原因?
随机推荐
#yyds干货盘点# 面试必刷TOP101:链表相加(二)
老电脑怎么重装系统win10
Short-term reliability and economic evaluation of resilient microgrids under incentive-based demand response programs (Matlab code implementation)
不论你是大众,科班和非科班,我这边整理很久,总结出的学习路线,还不快卷起来
Documentary on Security Reinforcement of Network Range Monitoring System (1)—SSL/TLS Encrypted Transmission of Log Data
LVS负载均衡群集之原理叙述
Nintendo won't launch any new hardware until March 2023, report says
EasyCVR本地接入国标设备映射公网后,本地设备出现无法播放与级联的解决方法
dotnet core 输出调试信息到 DebugView 软件
ptables基本语法使用规则
July 31, 2022 Summary of the third week of summer vacation
Route lazy loading
如何模拟后台API调用场景,很细!
自己经常使用的三种调试:Pycharm、Vscode、pdb调试
【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
路由懒加载
MMDetection 使用示例:从入门到出门
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
darknet source code reading notes-02-list.h and lish.c
2019 Haidian District Youth Programming Challenge Activity Elementary Group Rematch Test Questions Detailed Answers