1、包的命名
命名规则
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。
案例实操
demo.class.exec1 //错误,因为 class 关键字
demo.12a //错误,数字开头
命名规范
一般是小写字母+小圆点
案例实操
com.zpark.oa.model
com.zpark.oa.controller
com.sohu.bank.order
2、属性
var name: String = "bobo"
var age: Int = _
@BeanProperty var sex: String = "男"
说明
var
修饰的属性是可变的,val
修饰的属性是不可变的。
使用 @BeanProperty
注解可以自动生成规范的 setXxx/getXxx
方法。
3、访问权限
说明
Scala 中的访问权限修饰符包括 private
、protected
和包访问权限。
private
修饰的属性或方法只能在类内部和伴生对象中访问。
protected
修饰的属性或方法可以在子类中访问,但不能在同包的其他类中访问。
包访问权限可以通过 private[包名]
来实现。
案例实操
private var name: String = "bobo"
protected var age: Int = 18
private[test] var sex: String = "男"
4、方法
基本语法
def sum(n1: Int, n2: Int): Int = {
n1 + n2
}
说明
方法是类中执行特定任务的代码块。
Scala 中的方法可以有返回值类型,也可以省略(编译器会自动推导)。
5、创建对象
说明
- val 修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值。
- var 修饰对象,可以修改对象的引用和修改对象的属性值
- 自动推导变量类型不能多态,所以多态需要显示声明
class Person {
var name: String = "canglaoshi"
}
object Person {
def main(args: Array[String]): Unit = {
//val 修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值。
val person = new Person() person.name = "bobo"
// person = new Person()// 错误的
println(person.name)
}
}
6、构造器参数
说明
- 未用任何修饰符修饰,这个参数就是一个局部变量
- var 修饰参数,作为类的成员属性使用,可以修改
- val 修饰参数,作为类只读属性使用,不能修改
class Person(name: String, var age: Int, val sex: String) { } object Test { def main(args: Array[String]): Unit = { var person = new Person("bobo", 18, "男") // (1)未用任何修饰符修饰,这个参数就是一个局部变量 // printf(person.name) // (2)var 修饰参数,作为类的成员属性使用,可以修改 person.age = 19 println(person.age) println(person.age) // (3)val 修饰参数,作为类的只读属性使用,不能修改 // person.sex = "女" println(person.sex) } }
7、继承和多态
说明
class 子类名 extends 父类名 { 类 体 }
- 子类继承父类的属性和方法
- 继承的调用顺序:父类构造器->子类构造器
案例实操
class Person {
val name: String = "person"
def hello(): Unit =
{ println("hello
person")
}
}
class Teacher extends Person {
override val name: String = "teacher"
override def hello(): Unit = {
println("hello teacher")
}
}
object Test {
def main(args: Array[String]): Unit =
{ val teacher:
Teacher = new Teacher() println(teacher.name)
teacher.hello()
val teacher1:Person = new Teacher
println(teacher1.name)
teacher1.hello()
}
}