0.类和对象
scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。
0.1创建类和对象
用法
使用
class
来定义一个类使用
new
来创建对象
示例
创建一个Person类,并创建它的对象
步骤
创建一个scala项目,并创建一个Object
添加main方法
创建类和对象
实现
在IDEA中创建项目,并创建一个Object(main方法必须放在Object中)
添加main方法
创建一个Person类
object _01ClassDemo {
// 创建类
class Person{}
def main(args: Array[String]): Unit = {
// 创建对象
val p = new Person()
val p3:Person= new Person() //注意这种写法,和上面的写法一样,主要前后类型一致,可以省略。如果不一致(继承),则不可以省略
println(p)
}
}
尖叫提示:
注意scala程序入口要在object单例中main方法里,这里先把类定义在object里。然后通过main方法进行演示。具体原因后面会继续分析。
1.定义和访问成员变量
一个类会有自己的属性,例如:人这样一个类,有自己的姓名和年龄。我们接下来学习在类中定义、和访问成员变量。
用法
在类中使用
var/val
来定义成员变量对象直接使用成员变量名称来访问成员变量
示例
定义一个Person类,包含一个姓名和年龄字段
创建一个名为"张三"、年龄为20岁的对象
打印对象的名字和年龄
步骤
创建一个Object,添加main方法
创建Person类,添加姓名字段和年龄字段,并对字段进行初始化,让scala自动进行类型推断
在main方法中创建Person类对象,设置成员变量为"张三"、20
打印对象的名字和年龄
object _03ClassDemo {
class Person {
// 定义成员变量
var name = ""
var age = 0
}
def main(args: Array[String]): Unit = {
// 创建Person对象
val person = new Person
person.name = "zhangsan"
person.age = 20
// 获取变量值
println(person.name)
println(person.age)
}
}
1.1使用下划线初始化成员变量
scala中有一个更简洁的初始化成员变量的方式,可以让代码看起来更加简洁。
用法
在定义
var
类型的成员变量时,可以使用_
来初始化成员变量String => null
Int => 0
Boolean => false
Double => 0.0
...
特别注意:val
类型的成员变量,必须要自己手动初始化
示例
定义一个Person类,包含一个姓名和年龄字段
创建一个名为"张三"、年龄为20岁的对象
打印对象的名字和年龄
步骤
创建一个Object,添加main方法
创建Person类,添加姓名字段和年龄字段,指定数据类型,使用下划线初始化
在main方法中创建Person类对象,设置成员变量为"张三"、20
打印对象的名字和年龄
参考代码
object _04ClassDemo {
class Person{
// 使用下划线进行初始化
var name:String = _
var age:Int = _
}
def main(args: Array[String]): Unit = {
val person = new Person
println(person.name)
println(person.age)
}
}
2.定义成员方法
类可以有自己的行为,scala中也可以通过定义成员方法来定义类的行为。
定义
在scala的类中,也是使用def
来定义成员方法
示例
创建一个Customer类
创建一个该类的对象,并调用printHello方法
步骤
创建一个Object,添加main方法
创建Customer类,添加成员变量、成员方法
在main方法中创建Customer类对象,设置成员变量值(张三、男)
调用成员方法
object _05ClassDemo {
class Customer {
var name:String = _
var sex:String = _
// 定义成员方法
def sayHi(msg:String) = {
println(msg)
}
}
def main(args: Array[String]): Unit = {
val customer = new Customer
customer.name = "张三"
customer.sex = "男"
customer.sayHi("你好")
}
}
3.访问修饰符
和Java一样,scala也可以通过访问修饰符,来控制成员变量和成员方法是否可以被访问。
定义
Java中的访问控制,同样适用于scala,可以在成员前面添加private/protected关键字来控制成员的可见性。但在scala中,没有public关键字
,任何没有被标为private或protected的成员都是公共的
案例
定义一个Person类
在main方法中创建该类的对象,测试是否能够访问到私有成员
object _02AccessDemo {
class Person {
// 定义私有成员变量
private var name:String = _
private var age:Int = _
def getName() = name
def setName(name:String) = this.name = name
def getAge() = age
def setAge(age:Int) = this.age = age
// 定义私有成员方法
private def getNameAndAge = {
name -> age
}
}
def main(args: Array[String]): Unit = {
val person = new Person
person.setName("张三")
person.setAge(10)
println(person.getName())
println(person.getAge())
}
}
作者:
链接:https://blog.csdn.net/qq_26442553/article/details/108383309
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。