2023/7/04

发布时间 2023-07-04 16:06:44作者: 伐木工熊大

今天主要完成了几道关多态抽象类和接口的简单练习,了解到了接口的继承。接口可以有多个父接口,父接口中共有的方法需要在子接口中重写,而独有方法可以不用重写,子接口在实现类中

也要重写所有接口中的方法。

package 实践与练习;

public class Cat {
    public static void main(String[] args)
    {
        Cat a=new Cat(1,"Java",12,21.0,"java.awt.Color[r=0,g=0,b=0]");
        Cat b=new Cat(2,"C++",12,21.0,"java.awt.Color[r=255,g=255,b=255]");
        Cat c=new Cat(3,"java",12,21.0,"java.awt.Color[r=0,g=0,b=0]");
        System.out.println(a+"\n");
        System.out.println(b+"\n");
        System.out.println(c);
    }
    public Cat(int num,String name,int age,double weight,String color)
    {
        this.num=num;
        this.name=name;
        this.age=age;
        this.weight=weight;
        this.color=color;
    }
    private int num;
    private String name;
    private int age;
    private double weight;
    private String color;
    public String toString()//重载toString,按要求修改字符串转换模式
    {
        return "猫咪"+num+"号:名字:"+name+"\n年龄:"+age+"\n重量:"+weight+"\n颜色:"+color;
    }
}
package 实践与练习;
//点菜
public class people {
    public String dish;
    public String job;
    public people(String job,String dish)
    {
        this.job=job;
        this.dish=dish;
    }
    public String toString()//注意public类型
    {
        return job+"点了"+dish;
    }
}
package 实践与练习;

public class doctor extends people{
    doctor (String job,String dish){
        super(job,dish);
    }
}
package 实践与练习;

public class student extends people{
    student(String job,String dish){
        super(job,dish);
    }
}
package 实践与练习;

public class teacher extends people{
    teacher(String job,String dish){
        super(job,dish);
    }
}
package 实践与练习;

public class text {
    public static void main(String[] args)
    {
        people a=new teacher("老师","香辣肉丝");
        teacher b=(teacher) a;
        people c=new student("学生","火腿炒面");
        student d=(student) c;
        people e=new doctor("医生","麻辣香锅");
        doctor f=(doctor) e;
        System.out.println(b);
        System.out.println(d);
        System.out.println(e);
    }
}
package 实践与练习2;
//矩形面积
public abstract class Shape {
    public String color;
    abstract void area();
    Shape(String color)
    {
        this.color=color;
    }
}
package 实践与练习2;

public class Square extends Shape
{
    public double x,y;
    public Square(double x,double y,String color)
    {
        super(color);
        this.x=x;
        this.y=y;
    }
    public void area()
    {
        System.out.println("长为"+x+"宽为"+y+"的"+color+"长方形面积是:"+x*y);
    }
    public static void main(String[] args)
    {
        Shape a=new Square(6.0,2.0,"黄色");
        a.area();
    }
}
package 实践与练习2;
//三角形判断与周长
public abstract class Shape1 {
    public abstract void C();
    public abstract void T();
}
package 实践与练习2;

public class triangle extends Shape1{
    public double a;
    public double b;
    public double c;
    public triangle(double a,double b,double c)
    {
        this.a=a;
        this.b=b;
        this.c=c;
    }
    public void C()
    {
        System.out.println("这个三角形的周长为"+(a+b+c));
    }
    public void T()
    {
        if(a+b>c&&a+c>b&&b+c>a)
        {
            System.out.print("长为"+a+"、"+b+"、"+c+"的3条边能构成三角形,");
            C();
        }
        else
            System.out.println("长为"+a+"、"+b+"、"+c+"的3条边不能构成三角形,因为三角形的两边之和必须大于第三边。");
    }
    public static void main(String[] args)
    {
        Shape1 a=new triangle(3,4,5);
        a.T();
        Shape1 b=new triangle(1,4,5);
        b.T();
    }
}
package 实践与练习2;

public interface TypeRechargeable {
    public void charge();
}
package 实践与练习2;

public interface USBCRechargeable {
    public void charge();
}
package 实践与练习2;

public class Car implements USBCRechargeable, TypeRechargeable {
    public void charge() {
        System.out.println("汽车上的USB接口和TypeC接口都能用于给手机充电");
    }

}
package 实践与练习2;

public class Test {
    public static void main(String[] args)
    {
        TypeRechargeable a=new Car();
        USBCRechargeable b=new Car();
        a.charge();
        b.charge();
    }
}
package 实践与练习2;

public interface Addable {
    void add(int x);
}
package 实践与练习2;

public interface Reducible {
    void reduce(int x);
}
package 实践与练习2;

public interface Changeable extends Addable,Reducible//接口可以多继承
{
    final int UNITS=30;
    /*
     * 只需重写接口中的同名方法
     */
}
package 实践与练习2;

public class Number implements Changeable
{
    int num=0;
    public void add(int x)
    {
        num+=(x*UNITS);
    }
    public void reduce(int x)
    {
        num-=(x*UNITS);
    }
    public static void main(String[] args)
    {
        Changeable a=new Number();
        Number b=(Number) a;
        a.add(7);
        System.out.println(b.num);
        a.reduce(4);
        System.out.println(b.num);
    }
}