Scala面向对象编程- 类、属性、方法

本文详细介绍了Scala语言的面向对象编程特性,包括类的创建、对象的实例化、成员变量的定义及使用,以及Scala中方法的语法。通过具体示例,展示了Scala作为纯面向对象语言的语法特点。

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

Scala语言来自于java,天生就是面向对象的语言,且Scala是纯粹的面向对象的语言, 在Scala中一些皆对象

创建类的基本语法

 [修饰符] class 类名{
  类体
}

示例:

class Cat{
  //定义三个属性
  var name:String="";//初始化值为 “”
  var age:Int =_;//给age 复制为该类型的默认取值,Int 默认值是0
  var color:String =_;//给color 赋值为默认值 ""
}

创建对象语法

var|val 变量名[:类型]= new 类型()

 var c:Cat= new Cat

注意事项

1)如果对象的引用不会改变(只会改变对象的属性值) 则变量声明为 val 否则声明为 var
2) scala 中 变量声明类型可以省略(会根据new 的类名自动设置 变量类型),但是 如果声明的类型和new 的类型不一致时(有继承关系)必须声明类型
3)scala中类默认为public
4)一个文件中可以有多个类且默认都是public

成员变量/属性

注意事项

1)属性定义方法同成员变量 [修饰符] var 属性名称[:类型]=属性值
2)属性可以定义为任意类型
3)Scala中属性声明后必须显式初始化
4)如果赋值为null 一定要声明类型 否则 该属性类型被默认为Null
5)定时属性时如果暂时不想初始化,可以使用_ 来为变量分配默认值
6) 当我们声明了 var name:String 时,在底层java类中生成 private name 属性
同时会生成两个public 方法 :
name() (类似 java中的get**方法)和 public name_KaTeX parse error: Expected group after '_' at position 63: …调用对应java类的c.age_̲seq(10)方法
同理 调用c.age 时,其实是调用对应java类的c.age() 方法

底层原理

创建上述Cat类后 scala编译器会在底层自动生成对应的java类 ,到target目录下可以看到一个Cat.class 文件,反编译后内容如下:

class Cat {
  private var name: String = ""
  private var age: Int = 0
  private var color: String = null
  def name: String =  { return this.name
  }
  def name_$eq(x$1: String): Unit =  { this.name = x$1
  }
  def age: Int =  { return this.age
  }
  def age_$eq(x$1: Int): Unit =  { this.age = x$1
  }
  def color: String =  { return this.color
  }
  def color_$eq(x$1: String): Unit =  { this.color = x$1
  }
}

方法

scala中方法其实就是函数,语法: def 方法名(参数列表)[:返回类型]={方法体}
示例如下:

class Dog{

  def sum(a:Int,b:Int):Int={
    a+b;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catch that elf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值