Scala学习笔记(二)

本文是Scala学习笔记的第二部分,详细讲解了Scala中的类和对象创建、成员变量定义、下划线初始化、成员方法、访问修饰符、构造器、单例对象、main方法、伴生对象、类型判断、继承、抽象类和匿名内部类等核心概念。通过实例代码,深入探讨了Scala面向对象编程的关键特性。
摘要由CSDN通过智能技术生成

一、创建Scala工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、创建类和对象

scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。

  • 语法格式
  • 使用class来定义一个类
  • 使用new来创建对象
  • 示例

    创建一个Person类,并创建它的对象

    1. 创建一个scala项目,并创建一个Object
    2. 添加main方法
    3. 创建类和对象
    // 创建一个Person类
    class Person{
         }
    
    // 在IDEA中创建项目,并创建一个Object(main方法必须放在Object中)
    object ScalaDemo01 {
         
    	// 添加main方法
    	def main(args: Array[String]): Unit = {
         
    		// 在main方法中创建Person类对象
    		val p = new Person()
    		println(p)
     	}
     }
    

三、定义和访问成员变量

像Java一样,每一个类会有自己的属性,例如:Person这样一个类,有自己的姓名和年龄。

  • 语法格式

    • 在类中使用var/val来定义成员变量
    • 对象直接使用成员变量名称来访问成员变量
  • 示例

    1. 定义一个Person类,包含一个姓名和年龄字段
    2. 创建一个名为"张三"、年龄为20岁的对象
    3. 打印对象的名字和年龄
  • 参考代码

    // 创建Person类,添加姓名字段和年龄字段,并对字段进行初始化,让scala自动进行类型推断
    class Person {
         
        // 定义成员变量
        var name = ""
        var age = 0
    }
    
    // 创建一个Object,添加main方法
    object ScalaDemo02 {
         
        // 在main方法中创建Person类对象,设置成员变量为"aiden"、23
    	def main(args: Array[String]): Unit = {
         
    	    // 创建Person对象
    	    val person = new Person
    	    person.name = "aiden"
    	    person.age = 23
    	
    	    // 获取变量值
    	    println(person.name)
    	    println(person.age)
    	}
    }
    

tips:

  • 定义变量var,自动拥有setter和getter方法
  • 定义常量val,相当于java中的final修饰的变量,只有getter方法

四、使用下划线初始化成员变量

scala中有一个更简洁的初始化成员变量的方式,可以让代码看起来更加简洁。

  • 语法格式

    • 在定义var类型的成员变量时,可以使用_来初始化成员变量
      • String => null
      • Int => 0
      • Boolean => false
      • Double => 0.0
    • val类型的成员变量,必须要自己手动初始化
  • 示例

    1. 定义一个Person类,包含一个姓名和年龄字段
    2. 创建一个名为"aiden"、年龄为23岁的对象
    3. 打印对象的名字和年龄
    // 创建Person类,添加姓名字段和年龄字段,指定数据类型,使用下划线初始化
    class Person{
         
        // 使用下划线进行初始化
        var name:String = _
        var age:Int = _
    }
    
    // 创建一个Object,添加main方法
    object ScalaDemo03{
         
    	//在main方法中创建Person类对象
    	def main(args: Array[String]): Unit = {
         
    	    val person = new Person
    	    // 设置成员变量为"aiden"、23
    	    person.name = "aiden"
    	    person.age = 23
    	    //打印对象的名字和年龄
    	    println(person.name)
    	    println(person.age)
      }
    }
    

五、定义成员方法

在scala的类中,也是使用def来定义成员方法

  • 示例

    1. 创建一个Person类
    2. 创建一个该类的对象,并调用sayHello方法
    // 创建Person类,定义成员方法
    class Person {
         
        def sayHello = println("hello")
    }
    	
    // 创建一个Object,添加main方法
    object ScalaDemo04 {
         
    	def main(args: Array[String]): Unit = {
         
    	    val person = new Person
    	    person.sayHello
    	}
    }
    

六、访问修饰符

Java中的访问控制,同样适用于scala,可以在成员前面添加private/protected关键字来控制成员的可见性。但在scala中,没有public关键字,任何没有被标为privateprotected的成员都是公共

  • 示例

    • 创建一个Object,添加main方法
    • 创建Person类,定义私有成员变量和成员方法,并设置getter、setter方法
    • 在main方法中创建该类的对象
    • 设置变量的值,并打印
    // 创建Person类,定义私有成员变量和成员方法
    class Person {
         
        // 定义私有成员变量
        private var name:String = _
        private var age:Int = _
    	
    	//设置getter、setter方法
        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
        }
    }
    	
    // 创建一个Object,添加main方法
    object ScalaDemo05 {
         
    	// 在main方法中创建该类的对象
    	def main(args: Array[String]): Unit = {
         
    	    val person = new Person
    	    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值