Java,Python,Scala比较(二)类与继承

简介: UML图如下: 完整的Java代码如下: SimpleGeometricObject.javapublic class SimpleGeometricObject { private String col...

UML图如下:
这里写图片描述
完整的Java代码如下:
SimpleGeometricObject.java

public class SimpleGeometricObject {
    private String color = "white";
    private boolean filled;
    private java.util.Date dateCreated;

    /**Construct a default geometric object */
    public SimpleGeometricObject(){
        dateCreated = new java.util.Date();
    }

    /**Construct a geometric object with the specified color
     * and filled value*/
    public SimpleGeometricObject(String color, boolean filled) {
        dateCreated = new java.util.Date();
        this.color = color;
        this.filled = filled;
    }

    /**Return color*/
    public String getColor() {
        return color;
    }

    /**set a new color*/
    public void setColor(String color) {
        this.color = color;
    }

    /**Return filled. Since filled is boolean,
     * its better method is named isFilled*/
    public boolean isFilled() {
        return filled;
    }

    /**Set a new filled*/
    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    /**Get dateCreated*/
    public java.util.Date getDateCreated(){
        return dateCreated;
    }

    /**Return a string representation of this object*/
    public String toString() {
        return "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled;
    }
}

CircleFromSimpleGeometricObject.java

public class CircleFromSimpleGeometricObject extends SimpleGeometricObject{
    private double radius;

    public CircleFromSimpleGeometricObject() {}

    public CircleFromSimpleGeometricObject(double radius) {
        this.radius = radius;
    }

    public CircleFromSimpleGeometricObject(double radius, String color, boolean filled) {
        super(color, filled);
        this.radius = radius;   
    }

    /**Return radius*/
    public double getRadius() {
        return radius;
    }

    /**Set a new radius*/
    public void setRadius(double radius) {
        this.radius = radius;
    }

    /**Return area*/
    public double getArea() {
        return radius*radius*Math.PI;
    }

    /**Return diameter*/
    public double getDiameter() {
        return 2*radius;
    }

    /**Return perimeter*/
    public double getPerimeter() {
        return 2*radius*Math.PI;
    }

    /**Return the circle info*/
    public void printCircle() {
        System.out.println("The circle is created "+getDateCreated()+" and the radius is "+radius);
    }   
}

RectangleFromSimpleGeometricObject.java

public class RectangleFromSimpleGeometricObject extends SimpleGeometricObject{
    private double width;
    private double height;

    public RectangleFromSimpleGeometricObject() {}

    public RectangleFromSimpleGeometricObject(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public RectangleFromSimpleGeometricObject(double width, double height, String color, boolean filled) {
        super(color, filled);
        this.width = width;
        this.height = height;
    }

    /**Return width*/
    public double getWidth() {
        return width;
    }

    /**Set a new width*/
    public void setWidth(double width) {
        this.width = width;
    }

    /**Return height*/
    public double getHeight() {
        return height;
    }

    /**Set a new width*/
    public void setHeight(double height) {
        this.height=height;
    }   

    /**Return area*/
    public double gerArea() {
        return width*height;
    }

    /**Return perimeter*/
    public double getPerimeter() {
        return 2*(width+height);
    }
}

Test.java

public class Test{
    public static void main(String[] args){
        CircleFromSimpleGeometricObject circle = new CircleFromSimpleGeometricObject(1,"red", true);
        System.out.println("A circle "+circle.toString());
        System.out.println("The color is "+circle.getColor());
        System.out.println("The radius is "+circle.getRadius());
        System.out.println("The area is "+circle.getArea());
        System.out.println("The diameter is "+circle.getDiameter());

        RectangleFromSimpleGeometricObject rect = new RectangleFromSimpleGeometricObject(2,4);
        System.out.println("\nA rectangle is "+rect.toString());
        System.out.println("The area is "+rect.gerArea());
        System.out.println("The perimeter is "+rect.getPerimeter());
    }
}

完整的Python代码如下:

import math
import datetime

class SimpleGeometricObject(object):
    def __init__(self, color, filled):
        self.__color = color
        self.__filled = filled 
        self.__date = datetime.datetime.now()

    def getColor(self):
        return self.__color

    def setColor(self, color):
        self.__color = color

    def isFilled(self):
        return self.__filled

    def setFilled(self, filled):
        self.__filled = filled

    def getDateCreated(self):
        return self.__date.strftime("%Y/%m/%d/%H:%M")

    def __str__(self):
        return  "is created on "+self.getDateCreated()+", color: "+self.__color\
                +" and filled: "+str(self.__filled)

class CircleFromSimpleGeometricObject(SimpleGeometricObject):
    def __init__(self, color, filled, radius):
        super(CircleFromSimpleGeometricObject, self).__init__(color, filled)
        self.__radius = radius

    def getRadius(self):
        return self.__radius

    def setRadius(self, radius):
        self.__radius = radius

    def getArea(self):
        return self.__radius*self.__radius*math.pi

    def getPerimeter(self):
        return 2*self.__radius*math.pi

    def getDiameter(self):
        return self.__radius*2

    def printCircle(self):
        print(self.__str__()+" and the radius is "+str(self.__radius))

class RectangleFromSimpleGeometricObject(SimpleGeometricObject):
    def __init__(self, color, filled, width, height):
        super(RectangleFromSimpleGeometricObject, self).__init__(color, filled)
        self.__width = width
        self.__height = height

    def getWidth(self):
        return self.__width

    def setWidth(self, width):
        self.__width = width

    def getHeight(self):
        return self.__height

    def setHeight(self, height):
        self.__height = height 

    def getArea(self):
        return self.__width * self.__height

    def getPerimeter(self):
        return 2*(self.__width+self.__height)

def main():
    circle = CircleFromSimpleGeometricObject("red", True, 5)
    print("A circle ", circle)
    print("The color is ", circle.getColor())
    print("The radius is %s"%circle.getRadius())
    print("The area is %s"%circle.getArea())
    print("The diameter is %s"%circle.getDiameter())

    rect = RectangleFromSimpleGeometricObject("white", False, 3, 4);
    print("\nA rectangle", rect);
    print("The area is %s"%rect.getArea());
    print("The perimeter is %s"%rect.getPerimeter());

main()

完整的Scala代码如下:

import java.util.Date;
import scala.math._;

object demo extends App {
  class SimpleGeometricObject (private var color:String="white", private var filled:Boolean=false){
    private var dateCreated:java.util.Date = new Date()

    def getColor() = color

    def setColor(color:String) = {this.color = color}

    def isFilled() = filled

    def setFilled(filled:Boolean) = {this.filled = filled}

    def getDateCreated() = dateCreated 

    override def toString()= "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled
  }

  class CircleFromSimpleGeometricObject(color:String, filled:Boolean, private var radius:Double) extends SimpleGeometricObject(color,filled){
    def this() = this("white", false, 1.0)

    def getRadius() = radius

    def setRadius(radius:Double) = {this.radius = radius}

    def getArea() = radius*radius*Pi

    def getDiameter() = radius*2

    def getPerimeter() = radius*2*Pi

    def printCircle() = {println("The circle is created "+getDateCreated+" and the radius is "+radius)}
  }

  class RectangleFromSimpleGeometricObject(color:String, filled:Boolean, private var width:Double, private var height:Double) extends SimpleGeometricObject(color, filled) {
    def this() = this("white", false, 1.0, 1.0)

    def getWidth() = width

    def setWidth(width:Double) = {this.width = width}

    def getHeight() = height

    def setHeight(height:Double) = {this.height = height}

    def getArea() = width*height

    def getPerimeter() = 2*(width+height)
  }

  var circle = new CircleFromSimpleGeometricObject("red", true, 2.0)
  println("A circle is "+circle.toString())
  println("The color is "+circle.getColor())
  println("The radius is "+circle.getRadius())
  println("The area is "+circle.getArea())
  println("The diameter is "+circle.getPerimeter()) 

  var rect = new RectangleFromSimpleGeometricObject("green", true, 3.0, 4.0)
  println("\nA rectangle is "+rect.toString())
  println("The area is "+rect.getArea())
  println("The perimeter is "+rect.getPerimeter())
}

读者可以自己从上述代码中体验三种语言的相同点与不同之处,显然,Python与Scala语言较为简洁~~



本次分享到此结束,欢迎大家交流~~

目录
相关文章
|
5月前
|
Java 编译器 API
Java 密封类:精细化控制继承关系
Java 密封类:精细化控制继承关系
366 83
|
3月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
239 101
|
3月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
291 100
|
4月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
426 143
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
103 4
|
2月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
169 5
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
161 1
|
2月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
219 1
|
2月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
172 1

推荐镜像

更多