论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
2.2. 继承与多态
2.2. 继承与多态
饭宝
金牌会员
|
2023-5-29 23:24:10
|
显示全部楼层
|
阅读模式
楼主
主题
898
|
帖子
898
|
积分
2694
继承和多态是面向对象编程的两个重要概念,它们使得我们可以创建更加通用、可扩展的代码。
2.2.1. 继承
继承是一种创建新类的方式,新类(子类)从现有类(父类)继承属性和方法。子类可以重写或扩展父类的功能。
要创建一个子类,可以使用 extends 关键字:
class SubClassName extends ParentClassName {
// 子类的成员变量和方法
}
复制代码
示例1:继承
// 父类
class Animal {
String name;
int age;
void sleep() {
System.out.println(name + " is sleeping.");
}
}
// 子类
class Dog extends Animal {
String breed;
void bark() {
System.out.println(name + " is barking.");
}
}
class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.age = 3;
myDog.breed = "Golden Retriever";
myDog.bark(); // 子类的方法
myDog.sleep(); // 继承自父类的方法
}
}
复制代码
2.2.2. 方法重写(覆盖)
子类可以重写父类的方法,以便在调用子类对象的该方法时使用子类的实现而不是父类的实现。重写方法的返回类型、方法名和参数列表必须与父类相同。
class SubClassName extends ParentClassName {
@Override // 注解,表明该方法重写了父类的方法,非必须但建议使用
ReturnType methodName(Parameters) {
// 子类的实现
}
}
复制代码
示例2:方法重写
// 父类
class Animal {
String name;
int age;
void sleep() {
System.out.println(name + " is sleeping.");
}
}
// 子类
class Dog extends Animal {
String breed;
void bark() {
System.out.println(name + " is barking.");
}
@Override
void sleep() {
System.out.println(name + " the " + breed + " is sleeping.");
}
}
class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.age = 3;
myDog.breed = "Golden Retriever";
myDog.bark();
myDog.sleep(); // 调用子类重写的方法
}
}
复制代码
2.2.3. 多态
多态是一个对象在不同情况下表现出不同的行为。多态是通过父类引用指向子类对象实现的。
ParentClassName objectName = new SubClassName();
复制代码
示例3:多态
// 父类
class Animal {
String name;
int age;
void sleep() {
System.out.println(name + " is sleeping.");
}
}
// 子类
class Dog extends Animal {
String breed;
void bark() {
System.out.println(name + " is barking.");
}
@Override
void sleep() {
System.out.println(name + " the " + breed + " is sleeping.");
}
}
class Main {
public static void main(String[] args) {
// 多态
Animal myAnimal = new Dog();
myAnimal.name = "Buddy";
myAnimal.age = 3;
myAnimal.sleep(); // 调用子类重写的方法
// 注意:无法访问子类特有的方法和属性
// myAnimal.bark(); // 错误
// myAnimal.breed = "Golden Retriever"; // 错误
}
}
复制代码
多态的主要优点是代码的可扩展性和维护性。当你需要添加新的子类时,不需要修改使用多态的代码。
2.2.4. 抽象类和接口
抽象类和接口是 Java 中实现多态和代码复用的两种方式。
抽象类:包括抽象方法(没有实现的方法)和具体方法。子类必须实现所有抽象方法。使用 abstract 关键字定义抽象类和抽象方法。
abstract class AbstractClassName {
// 抽象方法
abstract ReturnType methodName(Parameters);
// 具体方法
ReturnType methodName(Parameters) {
// 方法实现
}
}
```
复制代码
接口:定义一组方法签名(没有实现的方法)。实现接口的类必须实现所有方法。使用 interface 关键字定义接口。
interface InterfaceName {
// 方法签名(没有方法体)
ReturnType methodName(Parameters);
}
```
复制代码
示例4:抽象类和接口
// 抽象类
abstract class Animal {
String name;
int age;
abstract void makeSound();
void sleep() {
System.out.println(name + " is sleeping.");
}
}
// 接口
interface Pet {
void play();
}
// 子类实现抽象类和接口
class Dog extends Animal implements Pet {
String breed;
@Override
void makeSound() {
System.out.println(name + " is barking.");
}
@Override
public void play() {
System.out.println(name + " is playing.");
}
}
class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.age = 3;
myDog.breed = "Golden Retriever";
myDog.makeSound(); // 实现抽象类的抽象方法
myDog.sleep(); // 继承自抽象类的具体方法
myDog.play(); // 实现接口的方法
}
}
复制代码
这是关于继承和多态的基本介绍。通过这些概念,你可以创建更加灵活和可扩展的代码。在实际开发中,你会遇到更多复杂和实用的用例,通过多做练习和深入学习,你将更好地掌握这些知识点。
推荐阅读:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
饭宝
金牌会员
这个人很懒什么都没写!
楼主热帖
53基于java的资源博客论坛系统设计与实 ...
zotero+坚果云实现多pc端及iPad同步管 ...
天涯神贴合集500篇(2023最新) ...
Android——一个简单的记账本APP ...
需求:清空三个月前的操作日志,并生成 ...
nginx 常用指令配置总结
【分布式计算】学习笔记(期末复习) ...
PerfView专题 (第十一篇):使用 Diff ...
面试官:@Configuration 和 @Component ...
【Java面试】概念性的问题怎么答,看完 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表