scala 基础十一 scala 中的trait特质

1.Scala类型系统的基础部分是与Java非常相像的。Scala与Java一样有单一的根类,Java通过接口来实现多重继承,而Scala则通过特征(trait)来实现(Scala的特征可以包含实现代码,这当然是与Java接口不同的。不过由于特征自己具有类型的功能,所以对于没有包含实现代码的特征,可以认为与Java的接口是等价的)

2.trait 的简单使用

package smart.iotclass scalatrait {}//定义一个trait
trait logger
{//可以在trait中定义一个方法def log(msg:String)="log messge:"+msg;//也可以在trait中定义一个抽象方法def add():Unit
}class classA
{def say1=println("say:hello ClassA")
}//如果没有父类的情况下,可以直接用 extends 继承 否则使用 with
class classB extends classA with logger
{def add(){println("hello scala")}def say2=println("say:hello ClassB")
}//如果没有父类的情况下,可以直接用 extends 继承 否则使用 with
class classC extends logger
{def add(){println("hello world!")}}object loads
{def main(args: Array[String]): Unit = {var classa=new classA();classa.say1;var classb=new classB();classb.add;classb.say2;classb.log("搜嘎!")var classc=new classC();classc.add;classc.log("搜嘎!")}
}


2.trait 的继承

//定义一个trait
trait logger
{//可以在trait中定义一个方法def log(msg:String)="log messge:"+msg;//也可以在trait中定义一个抽象方法def add():Unit
}trait t2 extends logger
{//实现䣂的抽象方法,当然也可以不实现def add=println("hello trait")//重写父类方法需要加 overrideoverride def log(msg:String)="log messge:"+msg;
}

 3. 在实例化一个类的时候同事with trait

    var classa=new classA() with t2;classa.say1;classa.add();classa.log(msg);

 4.完整代码

package smart.iotclass scalatrait {}//定义一个trait
trait logger
{//可以在trait中定义一个方法def log(msg:String)="log messge:"+msg;//也可以在trait中定义一个抽象方法def add():Unit
}trait t2 extends logger
{//实现䣂的抽象方法,当然也可以不实现def add=println("hello trait")//重写父类方法需要加 overrideoverride def log(msg:String)="log messge:"+msg;
}class classA
{def say1=println("say:hello ClassA")
}//如果没有父类的情况下,可以直接用 extends 继承 否则使用 with
class classB extends classA with logger
{def add(){println("hello scala")}def say2=println("say:hello ClassB")
}//如果没有父类的情况下,可以直接用 extends 继承 否则使用 with
class classC extends logger
{def add(){println("hello world!")}}object loads
{def main(args: Array[String]): Unit = {var classa=new classA() with t2;classa.say1;classa.add();classa.log("你好");var classb=new classB();classb.add;classb.say2;classb.log("搜嘎!")var classc=new classC();classc.add;classc.log("搜嘎!")}
}

 

 

 

转载于:https://www.cnblogs.com/IChing/p/7112355.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yum命令怎么使用

概念: yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。yum就像手机里的应用商店一样,提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。…

Bluetooth Obex

OPP 1.2 which uses OBEX over L2CAP.OPP 1.1 connection and transfer happens over RFCOMM->L2CAP.转载于:https://www.cnblogs.com/feliz/p/7122327.html

JavaEE规范与系统结构

JavaEE规范: JavaEE规范是J2EE规范的新名称,早期被称为J2EE规范,其全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP组织成员)。之所以改名为Jav…

HTTP协议和NDS服务器

HTTP协议: HTTP的全称是:Hyper Text Transfer Protocol,意为超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则:问答机制、握手机制。它规范了请求和响应内容的类型和格式。HTTP协议是由W3C…

net 中web.config一个配置文件解决方法 (其他配置文件引入方式)

近期一个项目需要写许多的配置项&#xff0c;发现在单个web.config里面写的话会很乱也难于查找 所以搜了一下解决了&#xff0c;记录下来 一、 webconfig提供了引入其他config的方式 <connectionStrings configSource"Configs\database.config" /> 这个是连接…

Servlet方法详解

Servlet&#xff1a; Servlet是SUN公司提供的一套规范&#xff0c;名称就叫Servlet规范&#xff0c;它也是JavaEE规范之一。使用JavaEE的API。目前在Oracle官网中的最新版本是JavaEE8&#xff0c; Servlet是一个运行在web服务端的java小程序它可以用于接收和响应客户端的请求要…

继承的实现原理

一.继承的实现原理 1.继承顺序 1.1单独分叉线路&#xff1a;经典类与新式类依次从左到右&#xff0c;深度优先 1.2多条重合线路&#xff1a;经典类一路到头&#xff0c;深度优先&#xff1b;新式类&#xff0c;广度优先。<参考MRO列表&#xff0c;仅在新式类有> class A(…

Python自动化之列表

##将首字母改成大写# name alex# v name.capitalize()# print(v)##将首字母改成小写# name Alex# v name.casefold()# print(v)###传一个值&#xff0c;两边补的是添加的字符# name Alex# v name.center(20,*)# print(v)##统计字符串出现的次数# name Alex# v name.cou…

Request请求

Request请求&#xff1a; Request请求&#xff0c;就是客户端希望从服务器端获取资源&#xff0c;向服务器发出询问。在B/S架构中&#xff0c;就是客户浏览器向服务器发出询问。在我们的JavaEE工程中&#xff0c;客户浏览器发出询问&#xff0c;要遵循HTTP协议所规定的。请求对…

MySQL编程基础

本文是关于MySQL编程中的一些基础知识&#xff0c;包括变量和运算符、常用语句、函数。 一、变量与运算符 1.用户会话变量声明&#xff1a;SET 变量名 表达式;//即&#xff1a;用户会话变量无需提前定义&#xff0c;直接用赋值语句赋值&#xff0c;就算是定义了&#xff08;也…

Response响应方法详解

Response&#xff1a; 响应&#xff1a;服务器把请求的处理结果告知客户端。在B/S架构中&#xff0c;响应就是把结果带回浏览器。响应对象&#xff1a;在项目中用于发送响应的对象 常用状态码&#xff1a; 状态码说明200执行成功302它和307一样&#xff0c;都是用于重定向的状…

perl6 HTTP::UserAgent (2)

http://www.cnblogs.com/perl6/p/6911166.html 之前这里有个小小例子&#xff0c; 这里只要是总结一下。 HTTP::UserAgent包含了以下模块: ---------------------------------------------------------------------------------------------- Module |Path-Nam…

Java会话技术

会话技术&#xff1a; 会话指的是客户端浏览器和服务端之间的度偶次请求和响应当打开浏览器&#xff0c;访问网站地址后&#xff0c;会话开始&#xff0c;当关闭浏览器&#xff08;或者到了过期时间&#xff09;&#xff0c;会话结束。就像打电话只要不挂电话就是一次会话。 会…

【调用IP宏文件进行仿真】modelsim仿真时出现 Instantiation of 'xxx' failed. The design unit was not found....

出现错误类似&#xff1a;modelsim 仿真fifo时出现 Error: (vsim-3033) E:/Programs/ModelSim/fifo/ps2_fifo.v(75): Instantiation of scfifo failed. The design unit was not found.仿真波形不对&#xff0c;调用的ip核没有输出&#xff08;白色虚线&#xff09;等情况&…

Java Server Page

JSP JSP全称是Java Server Page&#xff0c;基于Java和Servlet一样是sun公司推出的一套开发动态web资源的技术&#xff0c;称为JSP/Servlet规范。JSP的本质其实就是一个Servlet。jsp是一种动态网页技术标准&#xff0c;jsp部署在服务器上可以处理客户端的请求&#xff0c;并根据…

HDFS概述(2)————Block块大小设置

参考&#xff1a;HDFS概述&#xff08;4&#xff09;————HDFS权限HDFS概述&#xff08;3&#xff09;————HDFS FederationHDFS概述&#xff08;2&#xff09;————Block块大小设置HDFS概述&#xff08;1&#xff09;————HDFS架构问题Q: 一个常被问到的一个问题是…

PTA 01-复杂度2 Maximum Subsequence Sum (25分)

题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/663 5-1 Maximum Subsequence Sum (25分) Given a sequence of KK integers { N_1N​1​​, N_2N​2​​, ..., N_KN​K​​ }. A continuous subsequence is defined to be { N_iN​i​​, N_{i1}N​i1​​, ..…

Listener

观察者设计模式&#xff1a; 它是事件驱动的一种体现形式。就好比在做什么事情的时候被人盯着。当对应做到某件事时&#xff0c;触发事件。 观察者模式通常由以下三部分组成&#xff1a; ​1. 事件源&#xff1a;触发事件的对象。 2.​ 事件&#xff1a;触发的动作&#xff0c;…

BZOJ 1083: [SCOI2005]繁忙的都市【Kruscal最小生成树裸题】

1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2925 Solved: 1927[Submit][Status][Discuss]Description 城市C是一个非常繁忙的大都市&#xff0c;城市中的道路十分的拥挤&#xff0c;于是市长决定对其中的道路进行改造。城市C的道 路是这样分…

Mysql介绍与安装LinuxmacOS系统

数据库&#xff1a; 用于存储和管理数据的仓库 数据库的好处&#xff1a; 可以持久化存储数据方便存储和管理数据使用了统一的方式操作数据库 – SQL 常见的数据库&#xff1a; Oracle&#xff1a;收费的大型数据库&#xff0c;Oracle公司的产品。Oracle收购SUN公司&#xff0c…