当前位置: 首页 > news >正文

scala基础学习-类(1.定义类)

文章目录

  • 类,对象
    • 定义类
      • 构造
      • 定义方法
      • 重写方法
      • 私有
      • 默认参数

类,对象

scala定义类的关键字是:class

使用类实例化对象使用关键字:new

定义类

class Point(var x: Int, var y: Int) {

  def move(dx: Int, dy: Int): Unit = {
    x = x + dx
    y = y + dy
  }

  override def toString: String =
    s"($x, $y)"
}

val point1 = new Point(2, 3)
point1.x  // 2
println(point1)  // prints (2, 3)

构造

与python不同,构造方法直接在类的定义中设计,x,y,val x, var y 证明如果实例化后,x,y这俩属性还可以重新赋值,但是如果使用val x,val y 定义那么实例后,这俩属性就完全无法修改了。当使用val,var定义此成员为公有成员否则为私有成员

定义方法

使用def进行定义move方法,move方法接收两个参数dx,dy

重写方法

关键字override覆盖重写方法

私有

关键字private,可以使属性,方法变成私有方法 类似python中的__,不可再外部调用

默认参数

定义类时设置参数默认值,注意从Java代码中调用时,Scala中的默认参数则是必填的

私有成员定义

//x,y因为有var定义为公有,z为私有
class Point(var x: Int = 0, var y: Int = 0,z:Int=0)
class Point {
  //_x,_y不能直接调用
  private var _x = 0
  private var _y = 0
  private val bound = 100
  
  //通过共有成员调用私有
  def x(): Int ={ _x}
  //定义z不带()调用时候也不能带()
  def z = _x
  def x_= (newValue: Int): Unit = {
    if (newValue < bound) _x = newValue else printWarning
  }

  def y = _y
  def y_= (newValue: Int): Unit = {
    if (newValue < bound) _y = newValue else printWarning
  }
  //私有方法不能直接外部调用
  private def printWarning = println("WARNING: Out of bounds")
}

val point1 = new Point
println(point1.x())
//调用时也不带()
println(point1.z)
point1.x_=(1000)

ex:

class TestClassAtt(var x:Int,y:Int) {
  def add():Int={
    x+y
  }
  def printlninfo():Unit={
    println(x,y)
  }

  def get_private_y():Int={
    y
  }

  def public_func_a(): Int = {
    _private_func_a()
  }
  private def _private_func_a():Int={
    println("私有方法")
    x+x+y
  }


}

object App2{
  def main(args: Array[String]):Unit={
    val ldsx_clinet = new TestClassAtt(6,7)
    println(ldsx_clinet.x)
    println(ldsx_clinet.get_private_y())
    println(ldsx_clinet.add)
    ldsx_clinet.printlninfo()
    println(ldsx_clinet.public_func_a())
    }

}

相关文章:

  • 【身份安全】OAuth 2.0工作原理(一)
  • 企业搭建AI大模型平台,存储难题如何破?Infortrend普安存储GSx并行文件存储系统
  • 质量工程师的2025:从“找bug“到“造质量“的职业进化
  • 多省发布!第27届中国机器人及人工智能大赛各赛区比赛通知
  • 【VirtualBox 安装 Ubuntu 22.04】
  • 数据库基础之DDLDML
  • UnderPressure 部署笔记
  • 汽车软件公司采用WinAMS的综合性需求分析与效益研究
  • 1字节(8位)表示8个状态位
  • PyTorch 分布式训练(Distributed Data Parallel, DDP)简介
  • 快速入门 JSON 数据格式
  • wireshark开启对https密文抓包
  • 【工具使用-编译器】VScode(Ubuntu)使用
  • 【Android15 ShellTransitions】(九)结束动画+Android原生ANR问题分析
  • 深度学习篇---回归分类任务的损失函数
  • Git(八)如何在同一台电脑登录两个Git
  • 45 55跳跃游戏解题记录
  • static方法使用bean的方式
  • Nodejs上传文件的问题
  • 【JavaScript】JavaScript Promises实践指南
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 扬州市中医院“药膳面包”走红,内含党参、黄芪等中药材
  • 停电催生商机,中国品牌 “照亮” 西班牙
  • 五大光伏龙头一季度亏损超80亿元,行业冬天难言结束
  • 国铁集团去年收入12830亿元增3%,全年铁路运输利润总额创新高
  • 城市更新·简报│中央财政支持城市更新,倾斜超大特大城市