用java设计一个抽象类People具有抽象方法say()
时间: 2024-10-20 16:14:21 浏览: 26
在Java中,设计一个抽象类通常是用于规定一组共享的行为,但是具体内容由其子类提供。比如,如果你想创建一个表示人的抽象类`People`,并要求所有的人有一个共同的行为——说话,你可以这样做:
```java
public abstract class People {
// 抽象方法,声明了say()行为但没有实现
public abstract void say();
// 可能包含的一些非抽象辅助方法或属性
private String name;
// 构造函数
public People(String name) {
this.name = name;
}
// 其他方法,如获取名字
public String getName() {
return name;
}
// 通过抽象方法展示多态示例
public void introduce() {
System.out.println("我是" + getName() + ",我将说些什么...");
say(); // 子类需要实现这个方法
}
}
```
在这个例子中,`say()`是一个抽象方法,任何继承自`People`的类都必须实现它。当你实例化`People`的子类时,可以调用`introduce()`方法,虽然实际的说话内容取决于子类的具体实现。
相关问题
设计一个抽象类People,具有抽象方法say0; 设计子类ChinaPeople,AmericaPeople,实现抽象方法say0); 设计一个Speak类,提供speaking()方法,以上转型对
设计一个抽象类`People`,用于表示一般的人,我们可以这样定义:
```java
abstract class People {
public abstract void say0(); // 抽象方法say0
}
// 子类中国人的实现
class ChinaPeople extends People {
@Override
public void say0() {
System.out.println("中国人说:你好");
}
}
// 子类美国人的实现
class AmericaPeople extends People {
@Override
public void say0() {
System.out.println("美国人说:Hello");
}
}
```
接着,我们创建一个`Speak`类,这个类用于处理不同人说的行为,通过`People`类型的引用进行转换:
```java
class Speak {
public void speaking(People person) {
person.say0();
}
}
public class Main {
public static void main(String[] args) {
Speak talker = new Speak();
// 转型并实例化对象
ChinaPeople chinaPerson = new ChinaPeople();
AmericaPeople americaPerson = new AmericaPeople();
// 使用Speak类的speak方法,自动调用子类的say0
talker.speaking(chinaPerson); // 输出 "中国人说:你好"
talker.speaking(americaPerson); // 输出 "美国人说:Hello"
}
}
```
1. 设计⼀个抽象类People,具有抽象⽅法say(); 2. 设计⼦类ChinaPeople,AmericaPeople,实现抽象⽅法say(); 两个类的say()⽅法,分别输出语句:我是中国⼈;我是美国⼈ 3. 设计⼀个Speak类,提供speaking(People p)⽅法,注意:其参数是抽象的 People类型,Speaking⽅法中,要求以上转型对象参数p,调⽤say⽅法的内容; 4. 设计⼀个测试类Test,添加main函数,分别创建中国⼈和美国⼈,测试 speak类的使⽤; 5.再增加⼀个⼦类AfricaPeople,实现抽象⽅法say();添加到测试类中。
好的,我明白了,以下是代码实现:
```java
//抽象类People
abstract class People {
//抽象方法say
public abstract void say();
}
//中国人类
class ChinaPeople extends People {
//实现抽象方法say
public void say() {
System.out.println("我是中国人");
}
}
//美国人类
class AmericaPeople extends People {
//实现抽象方法say
public void say() {
System.out.println("我是美国人");
}
}
//非洲人类
class AfricaPeople extends People {
//实现抽象方法say
public void say() {
System.out.println("我是非洲人");
}
}
//Speak类
class Speak {
//speaking方法,接收People类型的参数
public void speaking(People p) {
p.say();
}
}
//测试类Test
public class Test {
public static void main(String[] args) {
//创建中国人对象
ChinaPeople china = new ChinaPeople();
//创建美国人对象
AmericaPeople america = new AmericaPeople();
//创建非洲人对象
AfricaPeople africa = new AfricaPeople();
//创建Speak对象
Speak speak = new Speak();
//Speak对象调用speaking方法,传入不同的People对象
speak.speaking(china);
speak.speaking(america);
speak.speaking(africa);
}
}
```
输出结果为:
```
我是中国人
我是美国人
我是非洲人
```
阅读全文