今天主要完成了几道关多态抽象类和接口的简单练习,了解到了接口的继承。接口可以有多个父接口,父接口中共有的方法需要在子接口中重写,而独有方法可以不用重写,子接口在实现类中
也要重写所有接口中的方法。
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); } }