Scala的trait

server/2024/12/17 4:54:30/
//定义trait
//1.不是类:不能实例化
//2.它的构造器不能带参数! 即:不能添加()trait Shentihao{//具体属性var KM_i = 5//抽象属性var sports:String//具体方法def say(): Unit = {}//抽象方法def run
}
class Student extends Shentihao{var sports = "跳绳"def run: Unit = {println("1000m 在4.5分钟内跑完")}
}
object zjh {def main(args: Array[String]): Unit = {var s1 = new Student()// s1.}
}

trait多继承 

//多继承//美貌
trait Beauty{val leg:Double
}//智慧
trait Wisdom{val Eq:Int
}
//一个类:实现了两特质。用with隔开
//多个特质可以交换顺序
class Girl extends Beauty  with  Wisdom{val leg = 180val Eq = 180override def toString: String = s"leg=${leg},eq=${Eq}"
}object tnt {def main(args: Array[String]): Unit = {val girl = new Girl()println(girl)}}

多重继承

//继承多个特质时,加载的顺序
//1.先父后子
//2.从左到右
trait A051{println("1")
}
trait B051{println("2")
}
class AB extends A051 with B051{println("AB")
}
object lll {def main(args: Array[String]): Unit = {new AB()}
}
trait A051{println("A051")}trait AA051 extends A051{println("AA051")}trait AB051 extends A051{println("AA051")}trait B051{println("B051")}trait BA051 extends B051{println("BA051")}trait BB051 extends B051{println("BB051")}class AB extends AA051 with BA051 with AB051 with BB051{println("AB")
}
object yyy {def main(args: Array[String]): Unit = {new AB()}}
//答案:A051 AA051 B051 BA051 AA051 BB051 AB

多重继承的惰性求值

import java.io.PrintWriter
//演示一个经典报错:空指引异常trait FileLogger{//抽象属性,没有=val filename:Stringprintln("父类",filename)val fileout = new PrintWriter(filename)//用来把 msg 写入到对应的文件中def log(msg:String): Unit = {fileout.println(msg)fileout.println()}
}
class Test211 extends FileLogger{val filename = "2024-10-28.txt"println("子类",filename)
}object zzx {def main(args: Array[String]): Unit = {val t1 = new Test211()t1.log("test!")}
}

import java.io.PrintWriter
//演示一个经典报错:空指引异常trait FileLogger{//抽象属性,没有=val filename:Stringprintln("父类",filename)//lazy 表示,不立刻求值,而是等到这个变量被使用的时候,去求值lazy val fileout = new PrintWriter(filename)//用来把 msg 写入到对应的文件中def log(msg:String): Unit = {fileout.println(msg)fileout.println()}
}
class Test211 extends FileLogger{val filename = "2024-10-28.txt"println("子类",filename)
}object zzx {def main(args: Array[String]): Unit = {val t1 = new Test211()t1.log("test!")}
}

 匿名类:提前定义

import java.io.PrintWritertrait FileLogger{//抽象属性,没有=val filename:Stringprintln("父类",filename)val fileout = new PrintWriter(filename)//用来把 msg 写入到对应的文件中def log(msg:String): Unit = {fileout.println(msg)fileout.println()}
}
class Test211 extends FileLogger{val filename = "2024-10-28.txt"println("子类",filename)
}object zzx {def main(args: Array[String]): Unit = {
//    val t1 = new Test211()//匿名类,提前定义val t1 = new { val  filename="2024-10-29.txt"} with FileLoggert1.log("test!" * 10)}


http://www.ppmy.cn/server/150806.html

相关文章

OpenCV--特征匹配

OpenCV--特征匹配 代码和笔记 代码和笔记 import cv2 import numpy as np""" 特征匹配 """""" 暴力特征匹配:使用第一组(第一幅图)中的一个特征描述子,使用一些距离计算与第二组中…

谷粒商城—分布式高级①.md

1. ELASTICSEARCH 1、安装elastic search dokcer中安装elastic search (1)下载ealastic search和kibana docker pull elasticsearch:7.6.2 docker pull kibana:7.6.2(2)配置 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "h…

Nmap初步学习

Target 实践内容&#xff1a;在目标系统中识别开放端口 涉及知识点&#xff1a;理解TCP/IP 协议、端口扫描技术、Nmap 工具使用、服务识别。 Trail 命令 nmap -sS <ip> //SYN半开扫描,使用最频繁&#xff0c;安全&#xff0c;快 nmap -sT //TCP连接扫描&#xf…

Linux网络基础知识————网络编程

计算机网络的体系结构 网络采用分而治之的方法设计&#xff0c;将网络的功能划分为不同的模块&#xff0c;以分层的形式有机结合在一起 每层实现不同的功能&#xff0c;其内部实现的方法对外部其他层次来说是透明的&#xff0c;每层向上一层提供服务&#xff0c;使用下一层提供…

rsyslog、Webhook 和 SNMP

rsyslog、Webhook 和 SNMP 是三种不同的技术和协议&#xff0c;通常用于日志管理、监控、和事件通知等场景中。它们的作用和使用场景有所不同。下面我将详细解释它们的功能、工作原理、适用场景和区别。 1. rsyslog&#xff08;Remote System Logging Protocol&#xff09; 作…

react 计算属性

一、计算属性的概念&#xff08;通过函数和钩子实现&#xff09; 1. 使用useMemo钩子&#xff08;用于性能优化&#xff09; useMemo是一个 React 钩子&#xff0c;用于缓存计算结果。它会在组件重新渲染时&#xff0c;根据依赖项数组来决定是否重新计算。如果依赖项没有改变…

Node.js基础入门

1.Node.js 简介 Node 是一个让 JavaScript (独立)运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。 简单的说 Node.js 就是运行在服务端的…

图像分割数据集植物图像叶片健康状态分割数据集labelme格式180张3类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;180 标注数量(json文件个数)&#xff1a;180 标注类别数&#xff1a;3 标注类别名称:["Healthy","nitrogen deficiency"…