通用类,来继承出圆和矩形。
package circle;
public class Geometric {
private String color="white";
private boolean filled;
private java.util.Date dateCreated;
public Geometric(){
dateCreated=new java.util.Date();
}
public Geometric(String color,boolean filled){
dateCreated=new java.util.Date();
this.filled=filled;
this.color=color;
}
public java.util.Date getDateCreated()
{
return dateCreated;
}
public String getColor()
{
return color;
}
public void setColor(String color)
{
this.color=color;
}
public boolean isFilled()
{
return filled;
}
public void setFilled(boolean filled)
{
this.filled=filled;
}
public String toString()
{
return "created on"+dateCreated+"\ncolor:"+color+"and filled "+filled;
}
}
package circle;
import java.util.*;
public class Circle extends Geometric{
private double radius;
public Circle()
{}
public Circle(double radius)
{
this.radius=radius;
}
public Circle(double radius,String color,boolean filled)
{
this.radius=radius;
setColor(color);
setFilled(filled);
}
public double getRadius()
{
return radius;
}
public void setRadius(double radius)
{
this.radius=radius;
}
public double getArea()
{
return Math.PI*radius*radius;
}
}
package circle;
public class Rectangle extends Geometric {
private double width;
private double height;
public Rectangle(){
}
public Rectangle(double width,double height)
{
this.width=width;
this.height=height;
}
public Rectangle(double width,double height,String color,boolean filled)
{
this.width=width;
this.height=height;
setColor(color);
setFilled(filled);
}
public double getWidth()
{
return width;
}
public void setWidth(double width)
{
this.width=width;
}
public double getHeight()
{
return height;
}
public void setHeight(double height)
{
this.height=height;
}
public double getArea()
{
return width*height;
}
public double getPerimeter()
{
return 2*(width+height);
}
}
package circle;
public class main {
public static void main(String[] args) {
/**
Geometric g1=new Geometric();
g1.setFilled(true);
Geometric g2=new Geometric("black",false);
System.out.print(g1.toString());
System.out.print(g2.toString());
*/
Circle c1=new Circle();
c1.setRadius(1.0);
System.out.println(c1.getArea());
Circle c2=new Circle(2.0,"red",true);
System.out.println(c2.getArea());
Rectangle r1=new Rectangle();
System.out.println(r1.getArea());
Rectangle r2=new Rectangle(1.0,2.0);
System.out.println(r2.getArea());
}
}
java中有两个包时,如果在一个包中使用其他包的类,可导入,import.包名.类名;即可方便使用。
重载方法意味着可以定义多个同名的方法,但这些方法具有不同的签名。
覆盖方法意味着为子类中的方法提供一个全新的实现。具体例子如下:
//类A的方法P覆盖了在类B中定义的同一个方法。
public class Test{
public static void main(String[] args){
A a=new A();
a.p(10);
a.p(10.0);
}
}
class B{
public void p(double i){
System.out.println(i*2);
}
}
class A extends B{
public void p(double i){
System.out.println(i);
}
}
//类B有两个重载方法P(double i)和P(int i),类B的p(double i)方法被继承。
public class Test{
public static void main(String[] args){
A a=new A();
a.p(10);
a.p(10.0);
}
}
class B{
public void p(double i){
System.out.println(i*2);
}
}
class A extends B{
public void p(int i){
System.out.println(i);
}
}