2. 继承抽象类Phone,显示手机信息 【问题描述】继承抽象类Phone,实现手机类,显示手机信息。 【输入形式】无 【输出形式】 Brand isHUAWEI OwnerId is130111111111111111
时间: 2023-12-04 17:06:02 浏览: 28
【代码示例】
public abstract class Phone {
protected String brand;
protected String ownerId;
public abstract void showInfo();
}
public class HuaweiPhone extends Phone {
public HuaweiPhone(String ownerId) {
this.brand = "HUAWEI";
this.ownerId = ownerId;
}
@Override
public void showInfo() {
System.out.println("Brand is " + brand);
System.out.println("OwnerId is " + ownerId);
}
}
public class Main {
public static void main(String[] args) {
Phone phone = new HuaweiPhone("130111111111111111");
phone.showInfo();
}
}
【输出结果】
Brand is HUAWEI
OwnerId is 130111111111111111
相关问题
【问题描述】继承抽象类Phone,实现手机类,显示手机信息。 【输入形式】无 【输出形式】 Brand isHUAWEI OwnerId is130111111111111111
【回答】好的,根据您的要求,我可以回答这个问题。以下是符合您要求的代码:
```python
# 定义抽象类Phone
from abc import ABC, abstractmethod
class Phone(ABC):
@abstractmethod
def show_info(self):
pass
# 实现手机类,继承Phone抽象类
class MobilePhone(Phone):
def __init__(self, brand, owner_id):
self.brand = brand
self.owner_id = owner_id
def show_info(self):
print("Brand is{}".format(self.brand))
print("OwnerId is{}".format(self.owner_id))
# 创建MobilePhone实例并显示信息
phone = MobilePhone('HUAWEI', '130111111111111111')
phone.show_info()
```
输出结果为:
```
Brand isHUAWEI
OwnerId is130111111111111111
```
(1) 定义抽象类Phone 属性:品牌brand,价格price JavaBean:有参构造,无参构造,及相应的getter( )、setter( )方法 抽象行为getContent( ):用于手机功能实现(旧手机用打电话;新手机用于视频电话) (2) 定义接口IPlay 行为:玩游戏playGame( ); (3) 定义旧手机类OldPhone继承手机类 属性:折扣discount;声明OldPhone类构造方法,并重写Phone类getConten( )方法 (4) 定义新手机类NewPhone继承手机类并实现IPlay接口 声明OldPhone类构造方法,并重写Phone类getContent( ) 重写玩游戏playGame( )方法 (5) 定义测试类 在测试类中定义一个用手机的方法,要求方法既能接收老手机对象,也能接收新手机对象 在该方法内部调用打电话,发短信以及新手机特有的玩游戏方法
好的,您的问题是如何定义一个抽象类、JavaBean、接口和继承它们来实现一个手机类及其子类,并在测试类中使用这些类来调用它们的方法。以下是示例代码:
```
// Phone.java
public abstract class Phone {
private String brand;
private double price;
public Phone() {
}
public Phone(String brand, double price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public abstract void getContent();
}
// IPlay.java
public interface IPlay {
void playGame();
}
// OldPhone.java
public class OldPhone extends Phone {
private double discount;
public OldPhone(String brand, double price, double discount) {
super(brand, price);
this.discount = discount;
}
@Override
public void getContent() {
System.out.println("打电话");
}
}
// NewPhone.java
public class NewPhone extends Phone implements IPlay {
public NewPhone(String brand, double price) {
super(brand, price);
}
@Override
public void getContent() {
System.out.println("视频电话");
}
@Override
public void playGame() {
System.out.println("玩游戏");
}
}
// TestPhone.java
public class TestPhone {
public static void usePhone(Phone phone) {
phone.getContent();
System.out.println("发短信");
if (phone instanceof NewPhone) {
((NewPhone) phone).playGame();
}
}
public static void main(String[] args) {
OldPhone oldPhone = new OldPhone("Nokia", 1000, 0.8);
NewPhone newPhone = new NewPhone("iPhone", 8000);
usePhone(oldPhone); // 打电话\n发短信
usePhone(newPhone); // 视频电话\n发短信\n玩游戏
}
}
```
在测试类中,我们定义了一个名为usePhone()的方法,它接收一个Phone类型的参数,并调用其getContent()方法和一些其他的方法。如果传入的是NewPhone类型的对象,则还会调用其playGame()方法。然后我们创建了一个OldPhone对象和一个NewPhone对象,并分别将它们传递给usePhone()方法来测试。
阅读全文