java面对对象多态

一:

  1. 定义书写功能接口(WriteAction)
    a)抽象方法void write()

  2. 定义笔类(Pen),实现WriteAction接口,重写write()方法,方法内不需要编写内容;
    a)属性: price价格(float类型), color颜色(String 类型);
    b)提供空参,满参构造方法和set/get方法;

  3. 定义画笔类(Brush),继承 Pen
    a)重写Pen中write()方法:输出格式: "现在使用的是价格为X的Y颜色的画笔",其中X为Brush的价格,Y为Brush的颜色;
    b)提供空参,满参构造方法

  4. 定义铅笔类(Pencil),继承 Pen
    a)重写Pen中write()方法: 输出格式: "现在使用的是价格为X的Y颜色的铅笔",其中X为Pencil的价格,Y为Pencil的颜色;
    b)提供空参,满参构造方法

  5. 定义画家类(Painter)
    a)属性: name姓名(String)
    b)成员方法 : 绘画方法(void draw(Pen p)),首先输出"画家X正在绘画",然后调用p对象的write方法,其中X为Painter的姓名;
    c)提供空参,满参构造方法,set/get方法

  6. 测试类Test
    a)提供main方法
    b)在main方法中
    i1.创建Brush类对象b1,价格赋值为5.8,颜色赋值为红色;
    i2.创建Pencil类对象p1,价格赋值为2.5,颜色赋值为黑色;
    i3.创建Painter对象,姓名赋值为王流秋;调用两次Painter的draw方法,分别传入b1和p1,进行测试

二:
1.定义接口Teach,要求如下:
定义抽象方法 void teaching();

2.定义类Teacher,实现接口Teach,包含空参构造,满参构造和以下成员变量
姓名 name(String 类型)
学科 course(String类型)
实现抽象方法teaching(),在方法内输出"我是X师傅,我教Y学科"
PS: X表示姓名,Y表示学科

3.定义Student类,包含空参构造,满参构造和以下成员变量
姓名 name(String类型)
分数 score(int 类型)
师傅 Teacher teacher

定义一个无参无返回值的方法getMyResult(),实现要求如下:
1).在方法内输出"我是学生S,我的师傅是W,他教我Z学科"
PS:SS是学生的姓名,W是teacher的姓名,Z是teacher所教学科

2).判断学员分数是否大于等于60分,如果大于等于60分,则输出"继续加油哦"
如果小于60分,则输出"成绩太低了,师傅W让我回去罚写100遍"
PS:W是teacher的姓名

4.定义测试类(Test),在main方法中,创建教师对象、学生对象并赋值
调用teaching()、getMyResult()方法

三:
1.定义手机类Phone
行为: 打电话(call),发短信(sendMessage)
2.定义接口IPlay
行为: 玩游戏(play)
3.定义旧手机类(OldPhone)继承手机类
行为: 继承父类的行为
4.定义新手机类(NewPhone)继承手机类实现IPlay接口
行为: 继承父类的行为,重写玩游戏方法
5.定义测试类(Test),创建对象并调用方法,运行效果如下(使用多态):
旧手机打电话
旧手机发信息
新手机打电话
新手机发信息
新手机玩游戏

public interface WriteAction {

  void write();

}

public class Pen implements WriteAction{

  protected float price;

  protected String color;

  public Pen(){

  }

  public Pen(float price, String color) {
    this.price = price;
    this.color = color;
  }

  @Override
  public void write() {

  }

  public float getPrice() {
    return price;
  }

  public void setPrice(float price) {
    this.price = price;
  }

  public String getColor() {
    return color;
  }

  public void setColor(String color) {
    this.color = color;
  }
}
public class Brush extends Pen{

  public Brush() {
  }

  public Brush(float price, String color){
    super(price, color);
  }

  @Override
  public void write() {
    System.out.println("现在使用的是价格为"+ price + "的"+ color + "颜色的画笔");
  }
}


public class Pencil extends Pen{

  public Pencil() {
  }

  public Pencil(float price, String color) {
    super(price, color);
  }

  @Override
  public void write() {
    System.out.println("现在使用的是价格为"+ price + "的"+ color + "颜色的铅笔");
  }
}

public class Painter {

  private String name;

  public Painter(){

  }

  public Painter(String name) {
    this.name = name;
  }

  public void draw(Pen p){
    System.out.println("画家" + name + "正在绘画");
    p.write();
  }

}
public class Test {

  public static void main(String[] args) {
    Brush b1 = new Brush(5.8f, "红色");
    Pencil p1 = new Pencil(2.5f, "黑色");
    Painter painter = new Painter("王流秋");
    painter.draw(b1);
    painter.draw(p1);
  }

}

运行结果:
画家王流秋正在绘画
现在使用的是价格为5.8的红色颜色的画笔
画家王流秋正在绘画
现在使用的是价格为2.5的黑色颜色的铅笔

第二个差不多,基本概念懂了就行,望采纳!