zoukankan      html  css  js  c++  java
  • 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")
      }
    
    }
  • 相关阅读:
    Android组件化路由实践
    RecyclerView实现Gallery画廊效果
    ReactNative实现GridView
    [Java][Servlet] Cannot call sendRedirect() after the response has been committed
    [Java][Servlet] Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"]
    [Environment Build] Win10下配置Apach Tomcat
    [Java][Liferay] File system in liferay
    [Java][Liferay] 解决在Linux系统中liferay-ext项目无法卸载的问题
    [Coding Style] CSS coding style
    [JQuery] Using skill in JQuery
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11426598.html
Copyright © 2011-2022 走看看