Scala编程基础4 类、对象、继承、特质

类、对象、继承、特质

小白的Scala学习笔记 2024‎/5‎/28‎ 11:30:40

package com.oracle.jt.testobject

import scala.collection.mutable.ListBuffer

class Student {
  def add(a:Int,b:Int)=a+b
  def spint(a:String)=a.split(",")
  def getList()={
    val list=new ListBuffer[String]()
    list.++=(Array("hello tom","jerry marry"))
    list
  }
  def print(lst:Map[String,Int])={
    lst.foreach(x=>println(x))
  }
}
//伴生类
object Student
{
  def main(args: Array[String]): Unit = {
    val stu =new Student()
    val list=List(22,33,55)
    val map = Map(("22",22),("33",33))
    stu.print(map)
    stu.getList().foreach(x=>println(x))
    println(stu.add(22, 33))
  }
}
package com.oracle.jt.testobject

/**
 * 构造方法,分为主构方法、辅助构造方法
 * 直接写在类名那里,就是主构造方法
 */
class Teacher(name:String,sex:String,age:Int) //这里就是主构造方法
{
  /**
   * 在Scala中属性必须赋值,可以用下划线占着
   */
  private var tname:String=name
  private var tsex:String=sex
  private var tage:Int=age
  private var phoneNumber:String=_
  def funPrint(): Unit ={
    println(tname,tsex,tage)
  }
  def this(phone:String)//this就是辅助构造方法,写辅助构造方法必须调用主构造方法
  {
    this("wangwu","nan",45)
    phoneNumber=phone
  }
  def this(){
    this("wangwu","nan",45)
    println("无参构造方法")

  }
}


object Teacher{
  def main(args: Array[String]): Unit = {
    var t=new Teacher("zhangsan","nan",23)
    t.funPrint()
    t.phoneNumber="143252354542"//这里phoneNumber是私有属性,其他类是不能访问的,这里的伴生类可以访问
    println(t.phoneNumber)

    var t2=new Teacher("12341234")
    t2.funPrint()

    var t3=new Teacher()
    t3.funPrint()

  }
}

Scala可以在类中、非方法中写代码,可以理解为代码写到了构造方法中

class A private(path:String)//这里的私有,表示其他类无法创建这个类对象
{
  //写在类中的代码相当于在java中的构造方法中的代码
println(path)
  for(i <- 0.to(11)){
    println(i)
  }
}

object A{
  def main(args: Array[String]): Unit = {
    var a=new A("D:/a.txt")
  }
}
import java.io.FileInputStream

class A private(path:String)//这里的私有,表示其他类无法创建这个类对象
{
//  //写在类中的代码相当于在java中的构造方法中的代码
//println(path)
//  for(i <- 0.to(11)){
//    println(i)
//  }

  try {// 也可以自己手动写try,catch

    //实现在文件中读
    val input = new FileInputStream(path) //Scala自己处理了抛异常的问题,所以直接这样就可以
    val cnt = new Array[Byte](1024)
    var flat = true
    while (flat) {
      val tmp = input.read(cnt)
      if (tmp == -1) {
        flat = false
      } else {
        println(new String(cnt, 0, tmp))
      }
    }
  }
  catch {// 也可以自己手动写try,catch,注意这里和java的差别
    case e:IndexOutOfBoundsException=>{
      e.printStackTrace()
    }
    case e:Exception=>{
      e.printStackTrace()
    }
  }
}

object A{
  def main(args: Array[String]): Unit = {
    var a=new A("D:\\b.txt")
  }
}

继承、接口

接口中既可以写声明,也可以写实现

继承父类用extends,实现接口也用extends,先继承父类(extends)再实现接口用with

class ParentEmp {
def signature={
  println("打卡")
}
}
class Employee extends ParentEmp with TestTrait {
def work(): Unit ={
  println("工作")
}

  override def add(): Unit = {
    println("add......")
  }
}
object TestEmp {
  def main(args: Array[String]): Unit = {
    val emp=new Employee()
    emp.signature
    emp.add()
    emp.work()
  }
}
trait TestTrait {
def add();
  def delete()=0
}

抽象类

Scala抽象类和接口功能差不多了,都能写声明和实现

abstract class ABSParent {
def add();
  def select()={
    println("查询.......")
  }
}
class ABSClass extends ABSParent {
  override def add(): Unit = {
    println("add.......")
  }
}
object
TestABS {
  def main(args: Array[String]): Unit = {
    val oo=new ABSClass()
    oo.add()
    oo.select()
  }
}

样例类

用来实现java中的实体类
Case Class

相关推荐

  1. Scala编程基础4 对象继承特质

    2024-06-07 02:44:03       30 阅读
  2. 面向对象编程基本特征--封装 继承 多态

    2024-06-07 02:44:03       27 阅读
  3. Scala基础面向对象编程

    2024-06-07 02:44:03       22 阅读
  4. Scala 对象

    2024-06-07 02:44:03       30 阅读
  5. Scala 】3. 对象

    2024-06-07 02:44:03       51 阅读
  6. PHP面向对象基础对象基本特点

    2024-06-07 02:44:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 02:44:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 02:44:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 02:44:03       87 阅读
  4. Python语言-面向对象

    2024-06-07 02:44:03       96 阅读

热门阅读

  1. [React]用 flushSync 同步更新 state

    2024-06-07 02:44:03       32 阅读
  2. Sass 详解

    2024-06-07 02:44:03       26 阅读
  3. linux c socket编程里SO_REUSEADDR的作用

    2024-06-07 02:44:03       34 阅读
  4. 【安卓基础】-- 消息机制 Handler

    2024-06-07 02:44:03       32 阅读
  5. lm studio 0.2.24国内下载模型

    2024-06-07 02:44:03       32 阅读
  6. 常见代码版本管理工具

    2024-06-07 02:44:03       33 阅读
  7. Android WebView升级

    2024-06-07 02:44:03       22 阅读
  8. 判断素数/质数

    2024-06-07 02:44:03       29 阅读
  9. Loguru,一个 Python 日志神器

    2024-06-07 02:44:03       31 阅读
  10. MySQL学习——从命令行调用MySQL 程序

    2024-06-07 02:44:03       26 阅读
  11. 【视频转码】ZLMediaKit漏洞报告的问题

    2024-06-07 02:44:03       30 阅读