博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java,Python,Scala比较(二)类与继承
阅读量:6218 次
发布时间:2019-06-21

本文共 8697 字,大约阅读时间需要 28 分钟。

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 mathimport datetimeclass 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语言较为简洁~~


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

你可能感兴趣的文章
强烈推荐Oracle的入门心得
查看>>
POJ 1195 Mobile phones (二维树状数组或线段树)
查看>>
LINUX下使用crontab进行RMAN备份实验
查看>>
Hive文件格式
查看>>
[LeetCode] Delete Node in a Linked List
查看>>
农历js脚本
查看>>
获取对象的 RTTI 属性与事件的函数
查看>>
java获得CPU使用率,系统内存,虚拟机内存等情况
查看>>
.NET操作Excel表格的整理
查看>>
vcl.Forms等与VCL界面有关的单元不支持跨平台
查看>>
Windows Vista for Developers——第一部分:Aero向导
查看>>
条件随机场CRF HMM,MEMM的区别
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
搜狐首页出现一个硕大的错别字
查看>>
《ASP.NET Web API 2框架揭秘》
查看>>
[导入]竟然支持OpenGL ES!
查看>>
java学习笔记-2
查看>>
csharp 復制DataTable修改某列的值
查看>>
51. 模型动画--动画路径
查看>>
公钥,私钥和数字签名这样最好理解 【转】
查看>>