• Scala面向对象—类详解


    package com.zzy
    import scala.beans.BeanProperty
    class Aclass {
      @BeanProperty//生成get和set方法对于其他框架里对标准的scalaBean的使用有重要作用
      var name=""
    
    
      private var age=0//屏蔽一些不合法的操作,提高程序的健壮性
      def getAge()=age
      def  setAge(age:Int):Unit={
        if (age>=0){
          this.age=age
        }else{
          this.age=18
        }
      }
    
    
    
      def  show():Unit={
        println("我是show方法")
      }
      def show2: Unit ={//方法无副作用可以不加括号
        println("我是show2方法")
    
      }
    
      //定制getter和setter-----按照java的方式写
      /*def getName():String=name
      def setName(name:String){this.name=name}*/
    
    }
    package com.zzy
    
    import org.junit.Test
    
    class Person (ad:String){//主构造器!!!
    
      var address=ad
      var  name="小白"
      var age=18
    
    
      //主构造器
      //无参构造器
      /*def Person(ad:String):Unit={
        println("主构造器被调用了")
    
      }*/
      //scala中只能有一个主构造器
    
      //辅助构造器
      def this(n:String,a:Int){
        this("河南")//调用主构造器
        this.name=n
        this.age=a
        println("辅助构造器被调用了")
      }
    
    
    
    
    }

    开发中正常一个类的结构

    package com.zzy
    
    import scala.beans.BeanProperty
    
    class Address {
      //给出getter  setter
    
      @BeanProperty
      var city="郑州"
      @BeanProperty
      var street="十五大街"
      @BeanProperty
      var mail="450000"
      //主构造器就是无参的构造方法
    
      //辅助构造器
      def this(c:String,s:String,m:String) {
        this()
        this.city = c
        this.street = s
      }
    
    
    //toString 重写了tostring
      override def toString = s"Address($city, $street, $mail)"
    
    }
    package com.zzy
    import org.junit.Test
    
    object MyTest {
      def main(args: Array[String]): Unit = {
        
        val aa = new Aclass
        aa.show()
        aa.name="赵云"//调用了setter
        println(aa.name)//调用了getter
    
        aa.show2
    
        //属性上加上@BeanProperty  对象就直接可以调用属性的get和set方法
        println(aa.getName)
        aa.setName("关羽")
        println(aa.getName)
    
        aa.setAge(-100)
        println(aa.getAge())//18
    
    
        //创建对象
       /*val person = new Person("郑州")//调用了有参数的主构造器
        println(person.address+"	"+person.name+"	"+person.age)*/
    
       /* val person2= new Person("曹操",50)
        println(person2.address+"	"+person2.name+"	"+person2.age)*/
        //有两个构造器(主,辅)就有两种方式创建对象
    
    
       /* val address = new Address
        println(address)*/
    
       /* val address2 = new Address("洛阳","凤凰街道","460000")
        println(address2)*/
    
    
      }
    
    
      //无法在object中使用junit
      @Test
      def myfunction():Unit={
        println("测试")
      }
    
    }

    Scala中junit的使用

    package com.zzy
    import org.junit.Test
    class myJunitTest {//scala可以在class中使用junit   object中不可以
    
      @Test
      def show:Unit={
        println("测试junit")
      }
    
    }
  • 相关阅读:
    F2. Same Sum Blocks (Hard) 解析(思維、前綴和、貪心)
    E. Copying Data 解析(線段樹)
    B. Nauuo and Circle 解析(思維、DP)
    POJ3436-ACM Computer Factory(最大流)
    A.牛牛扔牌(双端队列)/B.疯狂过山车(最长上升子序列)/C.牛牛的棋盘(容斥原理)
    CodeForces 665E. Beautiful Subarrays(字典树)(贪心)(异或前缀和)
    CodeForces 455C.Civilization(并查集)(树的直径)
    CodeForces 1021B. Chemical table(并查集)
    CodeForces 961E. Tufurama(主席树)
    CodeForces 1024C. Array Product(模拟)(分类讨论)
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11426598.html
Copyright © 2020-2023  润新知