Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class Shape {
- protected String color;
- protected boolean filled;
- public Shape(String c, boolean f){
- this.color = c;
- this.filled = f;
- }
- public Shape(){
- this("None", false);
- }
- public void setColor(String color) {
- this.color = color;
- }
- public String getColor() {
- return color;
- }
- public boolean isFilled() {
- return filled;
- }
- public void setFilled(boolean filled) {
- this.filled = filled;
- }
- public abstract double getArea();
- public abstract double getPerimeter();
- public abstract String ToString();
- }
- ////////////////////////
- public class Circle extends Shape {
- protected double radius;
- public Circle(double radius, String color, boolean filled){
- super(color, filled);
- this.radius = radius;
- }
- public double getRadius() {
- return radius;
- }
- public void setRadius(double radius) {
- this.radius = radius;
- }
- @Override
- public double getArea() {
- return 2*Math.PI*(radius*radius);
- }
- @Override
- public double getPerimeter() {
- return 2*Math.PI*radius;
- }
- @Override
- public String ToString() {
- return "Радиус: " + String.valueOf(this.getRadius()) + "\nПлощадь: " + String.valueOf(this.getArea()) + "\nПериметр: " + String.valueOf(this.getPerimeter())
- + "\nЦвет: " + color + "\nПрозрачность: " + filled;
- }
- }
- /////////////////////////
- public class Rectangle extends Shape {
- protected double width;
- protected double length;
- public Rectangle(double w, double l){
- super();
- width = w;
- length = l;
- }
- public Rectangle(double w, double l, String color, boolean fill){
- super(color, fill);
- width = w;
- length = l;
- }
- public Rectangle(){
- width = 1;
- length = 1;
- }
- public double getLength() {
- return length;
- }
- public double getWidth() {
- return width;
- }
- public void setLength(double length) {
- this.length = length;
- }
- public void setWidth(double width) {
- this.width = width;
- }
- @Override
- public double getArea(){
- return width*length;
- }
- @Override
- public double getPerimeter(){
- return (2*width)+(2*length);
- }
- @Override
- public String ToString(){
- return "Длина: " + length + "\nШирина: " + width + "\nПлощадь: " +this.getArea() + "\nПериметр: " + this.getPerimeter();
- }
- }
- ///////////////////////////
- public class Square extends Rectangle {
- protected double side;
- public Square(double si) {super(si, si); side = si;}
- @Override
- public double getArea(){
- return width*length;
- }
- @Override
- public double getPerimeter(){
- return (2*width)+(2*length);
- }
- @Override
- public double getWidth() {
- return side;
- }
- public double getSide() {
- return side;
- }
- @Override
- public String ToString(){
- return "Длина: " + length + "\nШирина: " + width + "\nПлощадь: " +String.valueOf(this.getArea()) + "\nПериметр: " + String.valueOf(this.getPerimeter());
- }
- }
- /////////////////////////
- public class Main {
- public static void main(String[] args){
- Shape s1 = new Circle(5.5, "RED", false); // Upcast Circle to Shape
- System.out.println(s1); // which version?
- System.out.println(s1.getArea()); // which version?
- System.out.println(s1.getPerimeter()); // which version?
- System.out.println(s1.getColor());
- System.out.println(s1.isFilled());
- //System.out.println(s1.getRadius());
- Circle c1 = (Circle)s1; // Downcast back to Circle
- System.out.println(c1);
- System.out.println(c1.getArea());
- System.out.println(c1.getPerimeter());
- System.out.println(c1.getColor());
- System.out.println(c1.isFilled());
- System.out.println(c1.getRadius());
- //Shape s2 = new Shape();
- Shape s3 = new Rectangle(1.0, 2.0, "RED", false); // Upcast
- System.out.println(s3);
- System.out.println(s3.getArea());
- System.out.println(s3.getPerimeter());
- System.out.println(s3.getColor());
- //System.out.println(s3.getLength());
- Rectangle r1 = (Rectangle)s3; // downcast
- System.out.println(r1);
- System.out.println(r1.getArea());
- System.out.println(r1.getColor());
- System.out.println(r1.getLength());
- Shape s4 = new Square(6.6); // Upcast
- System.out.println(s4);
- System.out.println(s4.getArea());
- System.out.println(s4.getColor());
- //System.out.println(s4.getSide());
- // Take note that we downcast Shape s4 to Rectangle,
- // which is a superclass of Square, instead of Square
- Rectangle r2 = (Rectangle)s4;
- System.out.println(r2);
- System.out.println(r2.getArea());
- System.out.println(r2.getColor());
- //System.out.println(r2.getSide());
- System.out.println(r2.getLength());
- // Downcast Rectangle r2 to Square
- Square sq1 = (Square)r2;
- System.out.println(sq1);
- System.out.println(sq1.getArea());
- System.out.println(sq1.getColor());
- System.out.println(sq1.getSide());
- System.out.println(sq1.getLength());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement