继承和接口

Posted ing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承和接口相关的知识,希望对你有一定的参考价值。

几何图形类的构造

import java.awt.*;
import java.applet.*;

abstract class Shape {
    //定义图形类,此类只是一般的图形总类,定义为抽象类,只是规定图形的一般格式
    int x,y;//图形左上角坐标
    Color c;//绘图颜色
    Graphics g;//图形对象
    Shape(){}//无参构造函数
    Shape(int x,int y,Color c,Graphics g){//有参构造函数
        this.x=x;this.y=y;this.c=c;this.g=g;
    }
    void setValue(int x,int y,Color c,Graphics g){//给成员数据赋值
        this.x=x;this.y=y;this.c=c;this.g=g;
    }
    abstract double area();//求面积方法
    abstract void draw();//绘图方法
}
//定义正方形类,作为图形的子类
class Square extends Shape{
    int a;
    Square(){}
    Square(int x,int y,Color c,Graphics g){
        super(x,y,c,g);this.a=a;
    }
    void setValue(int x,int y,Color c,Graphics g){
        super.setValue(x, y, c, g);this.a=a;
    }
    double area(){//实现求面积的方法
        return a*a;
    }
    void draw(){//实现画图的方法
        g.setColor(c);//设置色彩
        g.fillRect(x, y, a, a);
    }
}
//定义矩形类,作为正方形的子类
class Rectangle extends Square{
    int b;
    Rectangle(){}
    Rectangle(int x,int y,int a,int b,Color c,Graphics g){
        super(x,y,c,g);this.b=b;
    }
    void setValue(int x,int y,int a,int b,Color c,Graphics g){
        super.setValue(x, y, c, g);this.b=b;
    }
    double area(){//实现求面积的方法
        return a*b;
    }
    void draw(){//实现画图的方法
        g.setColor(c);//设置色彩
        g.fillRect(x, y, a, b);
    }
}
//定义三角形类,作为图形的子类
class Triangle extends Shape{
    int a[]={210,260,160};
    int b[]={20,70,70};
    Triangle(){}
    Triangle(int x,int y,Color c,Graphics g){
        super(x,y,c,g);
    }
    double area(){//实现求面积的方法
        double p,x,y,z;
        x=Math.sqrt(Math.pow(b[1]-b[0], 2)+Math.pow(a[1]-a[0], 2));
        y=x=Math.sqrt(Math.pow(b[2]-b[1], 2)+Math.pow(a[2]-a[1], 2));
        z=Math.sqrt(Math.pow(b[0]-b[2], 2)+Math.pow(a[0]-a[2], 2));
        p=(x+y+z)/2;
        return Math.sqrt(p*(p-x)*(p-y)*(p-z));
    }
    void draw(){//实现画图的方法
        g.setColor(c);//设置色彩
        g.fillPolygon(a,b,3);
    }
}
//定义圆类,作为图形的子类
class Circle extends Shape{
    int r;
    Circle(){}
    Circle(int x,int y,Color c,Graphics g){
        super(x,y,c,g);this.r=r;
    }
    void setValue(int x,int y,Color c,Graphics g){
        super.setValue(x, y, c, g);this.r=r;
    }
    double area(){//实现求面积的方法
        return (int)(3.1416*r*r);
    }
    void draw(){//实现画图的方法
        g.setColor(c);//设置色彩
        g.fillOval(x, y,2*r, 2*r);
    }
}
//定义椭圆类,作为图形的子类
class Oval extends Circle{
    int rr;
    Oval(){}
    Oval(int x,int y,int r,int rr,Color c,Graphics g){
        super(x,y,c,g);this.rr=rr;
    }
    void setValue(int x,int y,int r,int rr,Color c,Graphics g){
        super.setValue(x, y, c, g);this.rr=rr;
    }
    double area(){//实现求面积的方法
        return (int)(3.1416*r*rr);
    }
    void draw(){//实现画图的方法
        g.setColor(c);//设置色彩
        g.fillOval(x, y,2*r, 2*rr);
    }
}
public class ShapeDemo extends Applet{
    public void paint(Graphics g){
        Square a=new Square();
        a.setValue(20,20, Color.blue, g);
        a.draw();
        g.drawString("area of a="+a.area(),20,130);
        Triangle b=new Triangle(160,20,Color.red,g);
        b.draw();
        g.drawString("area of b="+b.area(),160,80);
        Square m=new Rectangle(160,100,100,150,Color.black,g);
        m.draw();
        g.drawString("area of c="+m.area(),160,260);
        Circle d=new Circle(20,150,Color.magenta,g);
        d.draw();
        g.drawString("area of d="+d.area(),20,260);
        Oval e=new Oval(300,20,50,115,Color.pink,g);
        e.draw();
        g.drawString("area of e="+e.area(),300,260);
    }
}

 

以上是关于继承和接口的主要内容,如果未能解决你的问题,请参考以下文章

php如何实现多继承?

spring aop中this和target区别

从父片段到选项卡片段的接口侦听器不起作用

多继承和代码块

java继承和接口的区别

与另一个片段通信的片段接口