Java实例 抽象类 public abstract class Shape( public double area(){return 0.0;} public double volume(){return 0.0; public abstract String getName(); public class Point extends Shape{/通过Shape类继承 protected int x,y;//coordinates of the Point public Point(inta,intb){setPoint(a,b):)//带参数的构造器 public void setpoint(int a,int b){ x=a; y-b; public int getx(){return x; public int gety(){return y; public String tostring() {return"["+x+","+y+"]";} public String getName(){return "Point";} //实现抽象方法
Java实例——抽象类 public abstract class Shape{ public double area() { return 0.0; } public double volume() { return 0.0; } public abstract String getName(); } public class Point extends Shape { //通过Shape类继承 protected int x,y; // coordinates of the Point public Point(int a,int b) { setPoint(a,b); } //带参数的构造器 public void setPoint(int a,int b){ x=a; y=b; } public int getX() { return x; } public int getY() { return y; } public String toString() { return "["+x+","+y+"]"; } public String getName() { return "Point"; } //实现抽象方法 }
Java实例— (续) public class Circle extends Point //通过Point类继承 protected double radius; public Circle(double r,int a,int b){ //带参数的构造器 super(a,b); //调用超类构造器 setRadius(r); public void setRadius(double r radius=(r>=0?r:0);) public double getRadius(){return radius; public double area(){return Math.PI*radius*radius; public String tostring() return "Center="+super.tostring()+"Radius="+radius; /引用父类的toString()方法 public String getName(){return "Circle";}
Java实例——(续) public class Circle extends Point { // 通过Point类继承 protected double radius; public Circle(double r,int a,int b){ //带参数的构造器 super(a,b); // 调用超类构造器 setRadius(r); } public void setRadius( double r ) { radius=(r>=0?r:0); } public double getRadius() { return radius; } public double area() { return Math.PI*radius*radius; } public String toString() { return "Center="+super.toString()+"Radius="+radius; } //引用父类的toString()方法 public String getName() { return "Circle"; } }
Java实例一(续) public class Cylinder extends Circle protected double height; //height of Cylinder public Cylinder(double h,double r,int a,int b){ super(r,a,b); setHeight(h); public void setHeight(double h) {height=(h>=0?h:0);} public double getHeight(){return height; public double area(){ return 2*super.area()+2*Math.PI*radius*height; public double volume(){return super.area()*height;} public String tostring() return super.tostring()+"Height="+theight; public String getName(){return "Cylinder";
Java实例——(续) public class Cylinder extends Circle { protected double height; // height of Cylinder public Cylinder(double h,double r,int a,int b){ super(r,a,b); setHeight(h); } public void setHeight(double h) { height=(h>=0?h:0); } public double getHeight() { return height; } public double area(){ return 2*super.area()+2*Math.PI*radius*height; } public double volume() { return super.area()*height; } public String toString() { return super.toString()+"Height="+height; } public String getName() { return "Cylinder"; } }
Java实例 (续) import javax.swing.JOptionPane; public class Show{ public static void main(String args[]){ Point point=new Point(7,11); Circle circle=new Circle(3.5,22,8); Cylinder cylinder=new Cylinder(10,3.3,10,10); Shape arrayofShapes[]=new Shape[3]; arrayofShapes[0]-point; arrayofShapes[1]=circle; arrayofShapes[2]=cylinder; String output=point.getName()+":"+point.tostring()+"\n"+ circle.getName ()+""+circle.tostring ()+"\n"+ cylinder.getName ()+""+cylinder.tostring () JOptionPane.showMessageDialog(null,output,"Demonstrating Polymorphism",JOptionPane.INFORMATION MESSAGE ) System.exit(0 )
Java实例——(续) import javax.swing.JOptionPane; public class Show{ public static void main(String args[]){ Point point=new Point(7,11); Circle circle=new Circle(3.5,22,8); Cylinder cylinder=new Cylinder(10,3.3,10,10); Shape arrayOfShapes[]=new Shape[3]; arrayOfShapes[0]=point; arrayOfShapes[1]=circle; arrayOfShapes[2]=cylinder; String output=point.getName()+":"+point.toString()+"\n"+ circle.getName()+":"+circle.toString()+"\n"+ cylinder.getName()+":"+cylinder.toString(); JOptionPane.showMessageDialog(null,output,"Demonstrating Polymorphism",JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }