当前位置:网站首页>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
}
}
边栏推荐
- npm配置国内镜像(淘宝镜像)
- 基于 eBPF 的 Kubernetes 可观测实践
- Literature Review on Involution of College Students
- darknet source code reading notes-02-list.h and lish.c
- Create Sentinel high-availability cluster current limiting middleware from -99
- 老电脑怎么重装系统win10
- 火灾报警联网FC18中CAN光端机常见问题解答和使用指导
- ptables基本语法使用规则
- Hezhou Cat1 4G module Air724UG is configured with RNDIS network card or PPP dial-up, and the development board is connected to the Internet through the RNDIS network card (taking the RV1126/1109 devel
- Nintendo won't launch any new hardware until March 2023, report says
猜你喜欢
#yyds干货盘点# 面试必刷TOP101:链表相加(二)
Flask框架实现注册加密功能详解【Flask企业课学习】
PHP代码审计7—文件上传漏洞
2018年南海区小学生程序设计竞赛详细答案
About the two architectures of ETL (ETL architecture and ELT architecture)
Matlab drawing 1
leetcode 14. 最长公共前缀
Google AppSheet: 无需编程构建零代码应用
数据库SqlServer迁移PostgreSql实践
DHCP&OSPF combined experimental demonstration (Huawei routing and switching equipment configuration)
随机推荐
Win10只读文件夹怎么删除
LVS负载均衡群集之原理叙述
EasyCVR如何通过接口调用设备录像的倍速回放?
图解LeetCode——899. 有序队列(难度:困难)
dotnet core 使用 CoreRT 将程序编译为 Native 程序
老电脑怎么重装系统win10
路由技术
powershell和cmd对比
Web端即时通讯技术:WebSocket、socket.io、SSE
Go 言 Go 语,一文看懂 Go 语言文件操作
部署LVS-DR群集
离线同步odps到mysql 中文乱码是因为?mysql已是utf8mb4
【简答题】月薪4k和月薪8k的区别就在这里
数仓相关,总结
Iptables防火墙基础知识介绍
[Web Automation Test] Quick Start with Playwright, 5 minutes to get started
什么是网站监控,网站监控软件有什么用?
Documentary on Security Reinforcement of Network Range Monitoring System (1)—SSL/TLS Encrypted Transmission of Log Data
如何让 JS 代码不可断点
ATF中断处理的设计模型