「Java学习打卡」38、面向对象题目练习

题目要求:

  1. 声明一个抽象类Pet,封装属性name和sex,声明一个带有两个参数的构造函数,声明抽象方法void talk()和void eat();
  2. 声明一个Dog类继承自Pet,封装属性color,声明带有三个参数的构造函数,复写talk()和eat()方法;
  3. 声明一个Cat类继承自Pet,封装属性weight,声明带有三个参数的构造函数,复写talk()和eat()方法;
  4. 编写测试类,通过有参构造函数实例化Dog类对象,调用talk()方法和eat()方法;通过有参构造函数实例化Cat类对象 ,调用talk()方法和eat()方法;
package case1;

import java.util.Scanner;

public class Task1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String dogName = sc.next();
		String dogSex = sc.next();
		String dogColor = sc.next();
		String catName = sc.next();
		String catSex = sc.next();
		double catWeight = sc.nextDouble();
		Dog d=new Dog(dogSex,dogName,dogColor);
        d.talk();
        d.eat();
		Cat c=new Cat(catSex,catName,catWeight);
        c.talk();
        c.eat();
	}
}

abstract class Pet {
	public String sex;
    public String name;
    public Pet(String s,String n){
        this.sex = s;
        this.name = n;
    }
    public void talk(){

    }
    public void eat(){

    }
}
class Dog extends Pet {
	private String color;
    public Dog(String s, String n,String c) {
        super(s, n);
        this.color=c;
    }
	public void talk(){
        System.out.println("名称:"+name+",性别:"+sex+",颜色:"+color+",汪汪叫");
    }
    public void eat(){
        System.out.println(""+name+"吃骨头!");
    }
    public void color(){
    }
}

class Cat extends Pet {
public double weight;
    public Cat(String s, String n,double w) {
        super(s, n);
        this.weight=w;
    }
    public void talk(){
        System.out.println("名称:"+name+",性别:"+sex+",体重:"+weight+"kg,喵喵叫");
    }
    public void eat(){
        System.out.println(""+name+"吃鱼!");
    }
}

你可能感兴趣的:(「Java学习打卡」38、面向对象题目练习)