首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
安全
›
网络安全
›
2.2. 继承与多态
返回列表
发新帖
2.2. 继承与多态
[复制链接]
发表于 2023-5-29 23:24:10
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
继承和多态是面向对象编程的两个重要概念,它们使得我们可以创建更加通用、可扩展的
代码
。
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
回复
使用道具
举报
返回列表
浏览过的版块
程序人生
Oracle
饭宝
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表