(4)scala面向对象编程 (一)基础

基础面向对象编程

笔记来自教程:https://www.bilibili.com/video/BV1aP4y1a7uC?p=25

包的声明

Java中package包的语法比较单一,Scala对此进行扩展

  1. scala同一个源码文件中,包可以多次声明
    包名可以和文件路径不一致
    在包中声明的类,调用时,导入最后的那个包(从上到下,声明的所有包的路径联合)
  2. scala中所有的语法都能嵌套
    包可以使用小括号,小括号之内声明的类在这个包中,小括号之外声明的类不在这个包中,比如下图中的类Emp 就不在包test中
    在这里插入图片描述
  3. scala可声明父包和子包,父包中的类,子包可直接访问,不需要引入。
    如下图 子包test1 访问 父包test 中的 类Emp 时,不需要引入
    在这里插入图片描述
  4. scala 包中可以声明类 但是无法声明变量和函数
  5. scal为了弥补包的不足,使用了包对象的概念,其中可以声明方法和属性。如下图
    在这里插入图片描述

import

  1. 基本语法
    Scala中基本的import导入语法和Java完全一致
    import java.util.List
    import java.util._ // Scala中使用下划线代替Java中的星号
  2. Scala中的import语法可以在任意位置使用
object ScalaImport{
    def main(args: Array[String]): Unit = {
        import java.util.ArrayList
        new ArrayList()
    }
}
  1. Scala中可以导包,而不是导类
object ScalaImport{
    def main(args: Array[String]): Unit = {
        import java.util
        new util.ArrayList()
    }
}
  1. Scala中可以在同一行中导入多个类,简化代码
import java.util.{List, ArrayList}
  1. Scala中可以屏蔽某个包中的类(因为不同包中可能存在同名类,未避免导类出错)
import java.util._
import java.sql.{ Date=>_, Array=>_, _ }
  1. Scala中可以给类起别名,简化使用
import java.util.{ArrayList=>AList}

object ScalaImport{
    def main(args: Array[String]): Unit = {
        new AList()
    }
}
  1. Scala中可以使用类的绝对路径而不是相对路径(如果自定义包命名时,与scala源代码中类的路径相同,为了区分,可以使用绝对路径)
import _root_.java.util.ArrayList
  1. 默认情况下,Scala中会导入如下包和对象
import java.lang._
import scala._
Import scala.Predef

  1. 基本语法
    // 声明类:访问权限 class 类名 { 类主体内容 }
class User {
}
// 对象:new 类名(参数列表)
new User()
  1. 扩展语法
    Scala中一个源文件中可以声明多个类

属性

  1. 基本语法
class User {
    var name : String = _ // 类属性其实就是类变量
    var age : Int = _ // 下划线表示类的默认初始化
}
  1. 扩展语法
    Scala中的属性其实在编译后也是方法,也就是说它可以自动生成类似java的get set方法 (取值放值方法,在java中需要手动定义)
class User {
    var name : String = _
val age : Int = 30
private val email : String = _
@BeanPropetry var address : String = _
}

访问权限

Scala中的访问权限和Java中的访问权限类似,但是又有区别:
private : 私有访问权限,只能当前类访问
private[包名]: 包访问权限
Protected : 受保护权限 (只能子类访问,同包访问不了)
(public是默认的访问权限 没有关键字)

方法

scala中类的方法 其实就是函数,就是使用方式不同,方法必须使用对象调用

object ScalaMethod{
    def main(args: Array[String]): Unit = {
        val user = new User
        user.login("zhangsan", "000000")
    }
}
class User {
    def login( name:String, password:String ): Boolean = {
        false
    }
}

对象

Scala中的对象和Java是类似的
val | var 对象名 [:类型] = new 类型()
var user : User = new User()

构造方法

分为 主构造方法和辅助构造方法
定义:
在类后面声明的构造方法就是主构造方法
在主构造方法中声明的构造方法就是辅助构造方法

class User(name:String){
	//类体 & 构造方法体
	
	//声明辅助构造方法
	def  this{
		this("zhangsan") //必须调用主构造方法
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值