快学scala第6章习题——对象相关

本篇博客主要介绍了Scala中对象的使用,包括创建conversion对象实现单位转换,使用超类UnitConversion进行抽象,以及探讨了扩展java.awt.Point的Origin对象的优缺点。此外,还讲解了如何通过伴生对象简化Point类实例化,利用App特质实现反序打印命令行参数,以及枚举在扑克牌花色和RGB立方体角落表示的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.编写一个conversion对象,加入inchestoCentimeters,gallonstoliters,milestoKilometers方法

 object Conversions{
     def inchesToCentimeters():Unit={
       println("Hello World");
     }
     def gallonsToLiters():Unit={

     }
     def milesToKilometers():Unit={

     }
   }

对象的调用方式

 Conversions.inchesToCentimeters();

2.前一个练习不是很面向对象,提供一个超类UnitConversion并定义扩展该超类的inchestoCentimeters,gallonstoliters,milestoKilometers的方法

object InchesToCentimeters extends UnitConversion{  
  override def inchesToCentimeters() {}  
}  

object GallonsToLiters extends UnitConversion{  
 override def gallonsToLiters() {}  
}  

object MilesToKilometers extends UnitConversion{  
  override def milesToKilometers() {}  
}  
   abstract class UnitConversion{
     def inchesToCentimeters():Unit;
     def gallonsToLiters():Unit
     def milesToKilometers():Unit
   }

3.定义一个扩展自java.awt.Point的Origin对象,为什么说这不是一个好方法?
因为 public java.awt.Point getLocation();返回的对象是原始Point对象,而不是继承Origin对象本身,而要返回Origin对象就需要Origin类


   object Origin extends java.awt.Point{
     override def getLocation():java.awt.Point=super.getLocation();
   }
   想返回origin对象的,需要用到类
    class Origin extends java.awt.Point{
     def this(x:Int,y:Int){
       this();
       this.x=x;
       this.y=y;
     }
     override def getLocation():Origin = {
        this;
     }
   }

4.定义一个Point类,和伴生对象,使我们可以通过Point(3,4)的形式来直接构造实例

class point(var x:Int,var y:Int){
      def show="x= "+x+ " , "+"y= "+y;

   }
   object point{
      //不能打括号,因为没返回参数,返回的是Unit类型
     def apply(x:Int,y:Int)=new point(x,y);

   }

5.编写一个scala应用程序,使用App特质,以反序打印命令行参数,用空格隔开,举例来说,scala Reverse Hello World应该打印出world hello。命令行参数和java的添加方式一样

  override def main(args:Array[String]){
     for(i<- (0 until args.length).reverse){
       print(args(i)+" ");
     }
   }

6.编写一个扑克牌4种花色的枚举,让其toString方法返回4种扑克符号,直接使用print打印即可

  object cardmark extends scala.Enumeration{
     type cardmark = Value;
     val hongtao=Value("♥");
     val meihua=Value("♣");
     val heitao=Value("♠");
     val fangkuai=Value("♦");
   }

7.实现一个函数,检查某张牌的花色是否为红桃

 def judgeColor(Color:cardmark.Value):Boolean={
     if(Color==cardmark.hongtao||Color==cardmark.fangkuai){
       true;
     }else{
       false;
     }
   }

8.编写一个枚举,描述RGB立方体的8个角,ID使用颜色值(例如:红色:0xff0000)

RGB的立方体的八个角分别为(1,0,0)=(0xff0000),(0,1,0)=(0x00ff00),(0,0,1)=(0x0000ff),(1,1,0)=(0xffff00),(1,1,1)=(0xffffff),(1,0,1)=(0xff00ff),(0,1,1)=(0x00ffff),(0,0,0)=(0x000000),value参数为ID,名称,如果ID缺省就在前项基础上+1,如果ID都缺省,就按顺序从0开始依次+1,名称缺省就和字段名称一样。
枚举定义如下:

  object RGB extends Enumeration{
     val White=Value(0xffffff,"White");
     val Red=Value(0xff0000,"Red");
     val Green=Value(0x00ff00,"Green");
     val Blue=Value(0xf0000ff,"Blue");
     val Yellow=Value(0xffff00,"Yellow");
     val Black=Value(0x000000,"Black");
     val Cyan=Value(0x00ffff,"Cyan");
     val MAGENTA=Value(0xff00ff,"Magenta");

   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值