当前位置:网站首页>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
}
}边栏推荐
- Google AppSheet: 无需编程构建零代码应用
- 面试官:MVCC是如何实现的?
- 【STM32】入门(五):串口TTL、RS232、RS485
- Short-term reliability and economic evaluation of resilient microgrids under incentive-based demand response programs (Matlab code implementation)
- Go 言 Go 语,一文看懂 Go 语言文件操作
- Route lazy loading
- 自己经常使用的三种调试:Pycharm、Vscode、pdb调试
- margin 塌陷和重合的理解
- 力扣学习---0804
- 2018读书记
猜你喜欢

Investigation and Research Based on the Involution Behavior of College Students

LVS+NAT 负载均衡群集,NAT模式部署

自己经常使用的三种调试:Pycharm、Vscode、pdb调试

How does the intelligent video surveillance platform EasyCVR use the interface to export iframe addresses in batches?

Iptables防火墙基础知识介绍

当项目中自动格式化插件Prettier和ESLint冲突报错时如何解决

阿里云国际版使用ROS搭建WordPress教程

MySQL安装教程(详细)

关于使用腾讯云HiFlow场景连接器每天提醒签到打卡

Documentary on Security Reinforcement of Network Range Monitoring System (1)—SSL/TLS Encrypted Transmission of Log Data
随机推荐
ATF中断处理的设计模型
ptables基本语法使用规则
部署LVS-DR群集
PHP代码审计8—SSRF 漏洞
数据集成:holo数据同步至redis。redis必须是集群模式?
【填空题】130道面试填空题
server
作业8.3 线程同步互斥机制条件变量
curl命令的那些事
Scala105-Spark.sql中collect_list用法
力扣学习---0804
解决错误:The package-lock.json file was created with an old version of npm
EasyCVR调用云端录像API接口返回错误且无录像文件生成,是什么原因?
22/8/4 记忆化搜索+博弈论
使用.NET简单实现一个Redis的高性能克隆版(二)
LVS+Keepalived群集
EuROC 数据集格式及相关代码
buuctf(探险1)
2018读书记
asp dotnet core 通过图片统计 csdn 用户访问