Scala面向对象——封装、抽象

本文介绍了Scala的面向对象编程特性,包括封装、抽象类与接口(trait)、继承、构造器、内部类和对象。文章详细阐述了如何在Scala中实现封装,如属性的get和set方法,以及类的继承机制,如类型检查、受保护的字段和超类构造器的调用。此外,还讨论了Scala中的特质trait,作为多继承的解决方案,以及对象和单例的使用。

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

面向对象概述

定义一个类,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版)。这种研究问题的方法称为抽象。

面向对象编程有三大特征,封装、继承和多态

封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作。

封装的理解和好处

隐藏实现细节,可以对数据进行验证,保证安全合理

如何体现封装

  1. 对类中的属性进行封装
  2. 通过成员方法,包实现封装

封装的实现步骤 将属性进行私有化提供一个公用的set方法,用于对属性判断并赋值 提供一个公共的get方法,用于获取属性的值

类的定义

Scala和java一样,都是用关键字class来进行类的声明

这里创建的对象Person,其实就是一个javabean,这种对象在各个调度层之间携带并传递数据

Controller----------->service-------------->dao

​ bean bean

Controller<-----------service<--------------dao

创建的这些bean一般都只会存在字段,而很少创建一些相关的方法

在Scala中,刚刚创建的这个类,其实就是模拟了java中的javabean,当然在Scala中有一个专门的类结构来表示java中的bean-- case class(样例类),会自动的给其中的字段提供getter和setter方法

自定义属性的get和set方法

Scala中的字段需要自己手动添加get和set方法,但是普通的Scala类并不适合类似java中的JavaBean操作

Bean属性

JavaBean规范把Java属性定义为一堆getFoo和setFoo方法,类似于Java,当你将Scala字段标注为@BeanProperty时,getter和setter方法会自动生成

但是此时的字段不能被private修饰

构造器

  1. Scala中和类名相同的方法并不是构造器
  2. Scala的其中一个构造器就在类名的后面,由于是无参的,所以默认省略了(),也就是参数列表。该构造器的方法体和类的定义交织在了一起。Scala不能用类名做构造器,而是使用this关键字来代替这里的类名
  3. Scala的构造器有两种,一种在类名后面定义,一种在类中使用this关键字来定义。第一种构造器被称之为Scala类的主构造器,第二种构造器被称为Scala类的辅助构造器
  4. Scala中的辅助构造器的第一句话,必须调用本类的主构造器或者其他辅助构造器

内部类

object InnerClassOps {
   
   
  def main(args: Array[String]): Unit = {
   
   
    val outer:Outer = new Outer()
    //创建Scala的内部类对象
    val inner = new outer.Inner()
    inner.show()
  }

}

class Outer {
   
    o => //此时的o代表的就是本类对象的引用
  val x = 5
  class Inner {
   
   
    val x = 6

    def show(): Unit ={
   
   
      val x = 7
      println("x="+x)
      println("x="+this.x)
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值