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

devtools/2024/10/18 16:46:16/

类、对象、继承、特质

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

文章目录

  • 类、对象、继承、特质
      • Scala可以在类中、非方法中写代码,可以理解为代码写到了构造方法中
    • 继承、接口
    • 抽象类
    • 样例类

scala">package com.oracle.jt.testobjectimport scala.collection.mutable.ListBufferclass Student {def add(a:Int,b:Int)=a+bdef 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))}
}
scala">package com.oracle.jt.testobject/*** 构造方法,分为主构方法、辅助构造方法* 直接写在类名那里,就是主构造方法*/
class Teacher(name:String,sex:String,age:Int) //这里就是主构造方法
{/*** 在Scala中属性必须赋值,可以用下划线占着*/private var tname:String=nameprivate var tsex:String=sexprivate var tage:Int=ageprivate 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可以在类中、非方法中写代码,可以理解为代码写到了构造方法中

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")}
}
scala">import java.io.FileInputStreamclass 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 = truewhile (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

scala">class ParentEmp {
def signature={println("打卡")
}
}
scala">class Employee extends ParentEmp with TestTrait {
def work(): Unit ={println("工作")
}override def add(): Unit = {println("add......")}
}
scala">object TestEmp {def main(args: Array[String]): Unit = {val emp=new Employee()emp.signatureemp.add()emp.work()}
}
scala">trait TestTrait {
def add();def delete()=0
}

抽象类

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

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

样例类

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


http://www.ppmy.cn/devtools/45263.html

相关文章

Docker安装Elasticsearch与案例

Elasticsearch安装与案例 1 ElasticSearch相关配置1.1 下载镜像文件1.2 创建实例1.3 安装1.4 错误日志排查1.5 放开权限&#xff0c;在elasticsearch目录下之心1.6 主机访问 192.168.xxx.xxx:9200 2 Kibana安装2.1 访问 &#xff1a;http://192.168.233.128:5601/2.2 设置启动d…

Qt第三方库QicsTable简单实例(1)

闲来无事&#xff0c;无意间看到一个Qics表格操作第三方库&#xff0c;自己写了一个特别简单的实例&#xff0c;效果如图所示&#xff1a; 操作界面的数据还是特别快的&#xff0c;因为使用了模型

大数据开发面试题【Flume篇】

79、介绍下Flume以及架构 是一个开源的日志系统&#xff0c;是一个分布式。可靠性和高可用的海量日志聚合系统&#xff0c;支持在系统中定制各类数据发送方&#xff0c;用于收集数据 Agent&#xff1a;是一个jvm进程&#xff0c;他以时间的形式将数据从源头送至目的地、Agent …

微信小程序怎么注册账号

要注册微信小程序账号&#xff0c;你需要遵循以下步骤&#xff1a; 访问微信公众平台&#xff1a; 首先&#xff0c;你需要访问微信公众平台的官方网站&#xff08;https://mp.weixin.qq.com/&#xff09;。 注册或登录&#xff1a; 如果你已经有一个微信公众平台账号&#xf…

【GD32】从零开始学GD32单片机高级篇——SDIO外设详解(GD32F470ZGT6)

目录 简介总线拓扑总线操作“无响应” 和 “无数据” 操作多块读写操作数据流读写操作 总线协议命令响应R1/R1b (普通命令响应)R2 (CID, CSD 寄存器)R3 (OCR 寄存器)R4 (Fast IO)R4b&#xff08;Fast IO&#xff09;R5 (中断请求)R5b&#xff08;中断请求&#xff09;R6 (发布的…

python的元组

元组与列表的区别 元组和列表非常相似。不同之处在于&#xff0c;外观上&#xff1a;列表是被 方括号 包裹起来的&#xff0c;而元组是被 圆括号 包裹起来的。本质上&#xff1a;列表里的元素可修改&#xff0c;元组里的元素是 不可以“增删改” 。 还有一个微妙的地方要注意…

吴恩达深度学习个人笔记

1. 上一个视频提到的房地产领域,我们不就使用了一个普遍标准神经网络架构吗 而对于图像识别处理问题,我们则要使用卷积神经网络(Convolution Neural Network),即CNN。 对于序列数据,例如音频,有一个时间组件,随着时间的推移,音频被播放出来, 所以音频是最自然的表…

remote: You are not allowed to push code to this project.

场景&#xff1a; 在我的电脑上替师姐上传代码 可能账号密码与初始配置&#xff08;我自己的&#xff09;不同&#xff0c;需要更换一下才能上传到师姐的账号上&#xff1a; 查看原本的用户&#xff1a; $ git config user.name | git config user.email显示是我自己的&…