1、按照要求使用Java进行编码。
1) 编写一个抽象类Shape,其中有抽象方法getArea()和getPerimeter()
2) 在Shape类的基础上派生出Rectangle和Circle类,二者都实现了计算面积的方法getArea()和计算周长的方法getPerimeter();
3) 构造main函数,生成Rectangle和Circle对象,并用Shape类型的变量调用Rectangle和Circle对象的getArea()和getPerim()方法。
package com.ly.shape; abstract class Shape { public abstract double getArea(); public abstract double getPerimeter(); }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.shape; 2 3 public class Rectangle extends Shape{ 4 private double x,y; 5 Rectangle(double x,double y){ 6 this.x=x; 7 this.y=y; 8 } 9 public double getX(){ 10 return x; 11 } 12 public double getY(){ 13 return y; 14 } 15 public double getArea() { 16 return getX()*getY(); 17 } 18 public double getPerimeter() { 19 return 2*(x+y); 20 } 21 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.shape; 2 3 public class Circle extends Shape{ 4 double PI=3.1415926; 5 double r; 6 Circle(double r){ 7 this.r=r; 8 } 9 double getRadius(){ 10 return r; 11 } 12 public double getArea() { 13 return PI*getRadius()*getRadius(); 14 } 15 public double getPerimeter() { 16 return 2*PI*getRadius(); 17 } 18 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.shape; 2 3 public class main { 4 public static void main(String[] args) { 5 Shape rec = new Rectangle(4.0,5.0); 6 Shape cr = new Circle(3.0); 7 8 System.out.println("矩形面积:"+rec.getArea()); 9 System.out.println("矩形周长:"+rec.getPerimeter()); 10 11 System.out.println("圆形面积:"+cr.getArea()); 12 System.out.println("圆形周长:"+cr.getPerimeter()); 13 } 14 }
2、以电话为父类,移动电话和固定电话为两个子类,并使移动电话实现接口:可移动。固定电话又有子类:无绳电话。定义接口及各类,明确他们的继承关系。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.phone; 2 3 public class settlementPhone implements Phone{ 4 public settlementPhone(){} 5 public void move(){ 6 System.out.println("固定电话"+NOMOVE); 7 } 8 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.phone; 2 3 public class mobilePhone implements Phone{ 4 public mobilePhone(){} 5 public void move(){ 6 System.out.println("移动电话"+MOVE); 7 } 8 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.phone; 2 3 public class silentPhone extends settlementPhone{ 4 public silentPhone(){} 5 public void move(){ 6 System.out.println("无绳电话"+NOMOVE); 7 } 8 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.phone; 2 3 public class main { 4 public static void main(String[] args) { 5 Phone phone1 = new mobilePhone(); 6 phone1.move(); 7 8 Phone phone2 = new settlementPhone(); 9 phone2.move(); 10 11 Phone phone3 = new silentPhone(); 12 phone3.move(); 13 } 14 15 }
3、在实验2中所实现的Teacher类的基础上,修改Teacher类的代码,要求:由多个Teacher对象所形成的数组可以使用Arrays.sort方法进行排序(编号由低到高排序)。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.teacher; 2 3 public class Teacher implements Comparable{ 4 private int no; 5 private String name; 6 private int age; 7 private String seminary; 8 9 Teacher(int no,String name,int age,String seminary){ 10 this.no = no; 11 this.name = name; 12 this.age = age; 13 this.seminary = seminary; 14 } 15 public int getNo(){ 16 return no; 17 } 18 public String getName(){ 19 return name; 20 } 21 public int getAge(){ 22 return age; 23 } 24 public String getSeminary(){ 25 return seminary; 26 } 27 public void setNo(int no){ 28 this.no = no; 29 } 30 public void setName(String name){ 31 this.name = name; 32 } 33 public void setAge(int age){ 34 this.age = age; 35 } 36 public void setSeminary(String seminary){ 37 this.seminary = seminary; 38 } 39 40 public boolean equal(Object o){ 41 boolean result=false; 42 Teacher t = (Teacher)o; 43 if(this.no==t.no){ 44 return true; 45 } 46 return result; 47 } 48 public String toString(){ 49 return "编号:"+no+"\n" 50 +"姓名:"+name+"\n" 51 +"年龄:"+age+"\n" 52 +"学院:"+seminary+"\n"; 53 } 54 55 //实现接口Comparable 56 public int compareTo(Object o) { 57 Teacher otherTea = (Teacher)o; 58 if(no<otherTea.no) return -1; 59 if(no>otherTea.no) return 1; 60 return 0; 61 } 62 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 package com.ly.teacher; 2 3 import java.util.Arrays; 4 5 public class main { 6 public static void main(String[] args) { 7 Teacher[] TeaArray = new Teacher[3]; 8 TeaArray[0] = new Teacher(1002,"Blanche",20,"College of information and science engineering"); 9 TeaArray[1] = new Teacher(1001,"David",21,"College of information and science engineering"); 10 TeaArray[2] = new Teacher(1003,"Kate",22,"College of information and science engineering"); 11 12 Arrays.sort(TeaArray); 13 for(int i=0;i<TeaArray.length;i++){ 14 System.out.print(TeaArray[i].getNo()+ ":"); 15 System.out.println(TeaArray[i].getName()); 16 } 17 } 18 }