2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发)

这篇具有很好参考价值的文章主要介绍了2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

7、Scala中的apply方法()

遇到如下形式的表达式时,apply方法就会被调用:

Object(参数1,参数2,......,参数N)

通常,这样一个apply方法返回的是伴生类的对象;其作用是为了省略new关键字

2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发),Scala,Spark实验,IDEA,spark,scala,intellij-idea

Object的apply方法举例:



//object的apply方法

class Student5(val stuName:String) {



}



object Student5 {

//定义自己的apply方法

def apply(stuName: String) = {

println("*********Apply in Object **********")

new Student5(stuName)

}

//如果没有这个apply方法,下面创建Mary的时候就会报错



def main(args: Array[String]): Unit = {

var s51 = new Student5("Tom")

println(s51.stuName)



var s52 = new Student5("Mary")

//由于省略了new关键字,创建这个对象的时候,就会在Object找对应的apply方法

println(s52.stuName)

}

}

8、Scala中的继承

Scala和Java一样,使用extends关键字扩展类。

案例一:Employee类继承Person类


//演示Scala的维承父类

class Person(val name:String,val age:Int) {

//定义结果

def sayHello():String = "Hello" + name + " and the age is " + age

}



//子类

class Employee (override val name:String,override val age:Int,val salary:Int) extends Person(name,age){

//重新父类的sayHello方法

//注意override 是关键字

override def sayHello(): String = "子类中的sayHello方法"

}



object Demo {

//测试程序

def main(args: Array[String]): Unit = {

//创建一个Employee的对象

var p2:Person = new Employee("Mike",25,1000)

println(p2.sayHello())





//使用匿名子类来创建Person对象

//这里我们创建了Person的一个匿名子类,并且在该子类中重写了sayHello方法。

var p3:Person = new Person("Jerry",26) {

override def sayHello(): String = "匿名子类中的sayHello方法"

}

println(p3.sayHello())

}

}

案例二:在子类中重写父类的方法

//子类

class Employee (override val name:String,override val age:Int,val salary:Int) extends Person(name,age){

//重新父类的sayHello方法

override def sayHello(): String = "子类中的sayHello方法"

}

案例三:使用匿名子类

//使用匿名子类来创建Person对象

//这里我们创建了Person的一个匿名子类,并且在该子类中重写了sayHello方法。

var p3:Person = new Person("Jerry",26) {

override def sayHello(): String = "匿名子类中的sayHello方法"

}

println(p3.sayHello())

案例四:使用抽象类。抽象类中包含抽象方法,抽象类只能用来继承。


//Scala中的抽象类



//父类:抽象类

abstract class Vehicle{

//定义抽象方法

def checkType():String

}



//子类



class Car extends Vehicle {

//实现checkType 方法

override def checkType(): String = {"I am a Car"}



}



class Bycical extends Vehicle {

//实现checkType方法

override def checkType(): String = {"I am a bike"}

}



object Demo2 {

//定义两个交通工具

def main(args: Array[String]): Unit = {

var v1:Vehicle = new Car

println(v1.checkType())



var v2:Vehicle = new Bycical

println(v2.checkType())

}



}

案例五:使用抽象字段。抽象字段就是一个没有初始值的字段


package class4

//Scala中的抽象字段:就是没有初始值的字段

//抽象的父类



abstract class Person{

//第一个抽象字段,并且只有get方法



val id:Int

//另一个抽象字段,并且有get和set方法

var name:String

}

//子类:应该提供抽象字段的初始值,否则该子类也,应该是抽象的



abstract class Employee1 extends Person {

//val id:Int = 1

var name:String = "No Name"



}

class Employee2(val id:Int) extends Person {

var name:String = "No Name"

}

object Demo3 {

def main(args: Array[String]): Unit = {

var a:Person = new Employee2(1)



println(a.id,a.name)





}

}

9、Scala中的trait(特质)

trait就是抽象类。trait跟Java抽象类最大的区别:trait支持多重继承


package class4



/*

* Scala中的trait

* 1.trait 就是抽象类

* 2.区别:trait 支持多重继承

*/



//第一个trait

trait Human {

val id:Int

val name:String



//方法

def sayHello():String = "Hello" + name

}



//第二个trait

trait Actions {

//抽象方法

def getActionNames():String

}



//子类

class Student(val id:Int,val name:String) extends Human with Actions {

override def getActionNames(): String = "Action is running"

}



object Demo4 {

def main(args: Array[String]): Unit = {

//创建一个student的对象

var s1 = new Student(1,"Tom")

println(s1.sayHello())

println(s1.getActionNames())

}

}

10、包的使用

Scala的包和Java中的包或者C++中的命名空间的目的是相同的:管理大型程序中的名称。

2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发),Scala,Spark实验,IDEA,spark,scala,intellij-idea

Scala中包的定义和使用:

包的定义

2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发),Scala,Spark实验,IDEA,spark,scala,intellij-idea

包的引入:Scala中依然使用import作为引用包的关键字,例如

2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发),Scala,Spark实验,IDEA,spark,scala,intellij-idea

而且Scala中的import可以写在任意地方

2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发),Scala,Spark实验,IDEA,spark,scala,intellij-idea

11、包对象

包可以包含类、对象和特质,但不能包含函数或者变量的定义。很不幸,这是

Java虚拟机的局限。把工具函数或者常量添加到包而不是某个Utils对象,这是

更加合理的做法。Scala中,包对象的出现正是为了解决这个局限。Scala中的包

对象:常量,变量,方法,类,对象,trait(特质)


package class4



//Scala中的包对象:常量,变量,方法,类,对象,trait(特质)



//定义一个包对象



package object MyPackageObject {



//常量

val x:Int = 0



//变量

var y:String = "Hello World "



//方法

def sayHelloWorld():String = "Hello World"



//类

class MyTestClass {



}



//对象object

object MyTestObject {



}



//特质 trait

trait MyTestTrait {



}



}



class Demo3 {

//测试

def method1 = {

//导入需要的包对象

import class4.MyPackageObject._

//定义MyTestClass的一个对象

var a= new MyTestClass

}

}

12、Scala中的文件访问

读取行


val source = scala.io.Source.fromFile("e:\\temp\\a.txt")

println(source.mkString)

val lines = source.getLines()

for(l<-lines) println(l.toString)

读取字符


val source = scala.io.Source.fromFile("e:\\temp\\a.txt")

for(c <-source) println(c)

其实这里的source就指向了这个文件中的每个字符。文章来源地址https://www.toymoban.com/news/detail-689469.html

到了这里,关于2023_Spark_实验六:Scala面向对象部分演示(二)(IDEA开发)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Scala面向对象编程(高级部分)

    Scala面向对象编程(高级部分)

    (1)回顾Java中的静态概念 public static 返回值类型 方法名(参数列表) {方法体} 静态属性… 说明: Java中静态方法并不是通过对象调用的,而是通过类对象调用的,所以静态操作并不是面向对象的。 (2)Scala中静态的概念-伴生对象 ①Scala语言是完全面向对象(万物皆对象)的语言

    2024年02月09日
    浏览(17)
  • 2023_Spark_实验八:Scala高级特性实验

    2023_Spark_实验八:Scala高级特性实验

    1、什么是泛型类 和Java或者C++一样,类和特质可以带类型参数。在Scala中,使用方括号来定义类型 参数,如下所示: 2、什么是泛型函数 函数和方法也可以带类型参数。和泛型类一样,我们需要把类型参数放在方法名之 后。 注意:这里的ClassTag是必须的,表示运行时的一些信

    2024年02月08日
    浏览(7)
  • 2023_Spark_实验四:SCALA基础

    2023_Spark_实验四:SCALA基础

    或者用windows徽标+R  输入cmd 进入命令提示符 输入scala直接进入编写界面 1、Scala的常用数据类型 注意:在Scala中,任何数据都是对象。例如: 1. 数值类型:Byte,Short,Int,Long,Float,Double Byte: 8位有符号数字,从-128 到 127 Short: 16位有符号数据,从-32768 到 32767 Int: 32位有符号

    2024年02月10日
    浏览(10)
  • 2023.5.5 面向对象程序设计实验报告

    实验项目名称:模板 1、熟练掌握函数模板和类模板的定义格式。 2、熟练运用函数模板和类模板解决实际问题。 1、复数类Complex有两个数据成员:a和b, 分别代表复数的实部和虚部,并有若干构造函数和一个重载-(减号,用于计算两个复数的距离)的成员函数。 要求设计一个

    2024年02月02日
    浏览(13)
  • 2023_Spark_实验二:IDEA安装及配置

    2023_Spark_实验二:IDEA安装及配置

    一、下载安装包 链接:百度网盘 请输入提取码 所在文件夹:大数据必备工具--》开发工具(前端+后端)--》后端 下载文件名称:ideaIU-2019.2.3.exe (喜欢新版本也可安装新版本,新旧版本会存在部分差异) IDEA 安装 第一步,双击 ideaIU-2019.2.3.exe 安装包,出现如下页面,点击图中

    2024年02月10日
    浏览(15)
  • 06-Scala面向对象

    ​ Scala是一门完全面向对象的语言,摒弃了Java中很多不是面向对象的语法。 ​ 虽然如此,但其面向对象思想和 Java的面向对象思想还是一致的 1)基本语法 Scala中基本的package包语法和 Java 完全一致 例如: 2)Scala包的三大作用(和Java一样) 区分相同名字的类 当类很多时,可

    2024年02月07日
    浏览(23)
  • Scala(第六章 面向对象)

    Scala(第六章 面向对象)

    1、 Scala的面向对象思想和Java的面向对象思想和概念是一致的。 2、Scala中语法和Java不同,补充了更多的功能。 1)基本语法 1 2)Scala包的三大作用(和Java一样) 1、区分相同名字的类 2、当类很多时,可以很好的管理类 3、控制访问范围 6.1.1 包的命名 1)命名规则 只能包含数

    2024年02月13日
    浏览(16)
  • Scala之面向对象(2)

    Scala之面向对象(2)

    目录 单例对象(伴生对象): 创建对象常用的两种方法: (1)使用构造器构造(new) (2)使用静态方法  伴生对象的定义: apply方法: apply方法的调用: 单例模式: 单例模式分为两种: 1.懒汉式 2.饿汉式:(推荐) 特质(Trait): 基本语法: 说明 特质叠加: 特质和抽象

    2024年02月01日
    浏览(12)
  • 大数据——Scala面向对象

    案例 定义类表示矩形(Rectangle),提供对外获取周长(girth)和面积(area)的函数,并且为这个矩形类提供一个子类表示正方形(Square) 抽象类和抽象方法 在Scala中,依然是通过 abstract 来定义抽象类。不同的地方在于,Scala中不需要使用 abstract 来定义抽象方法;如果一个方法在定义的

    2024年04月27日
    浏览(9)
  • 【Scala】——面向对象

    【Scala】——面向对象

      Scala 有两种包的管理风格。 第一种 Java 的包管理风格相同,每个源文件一个包(包 名和源文件所在路径不要求必须一致),包名用“.”进行分隔以表示包的层级关系,如 com.atguigu.scala。 另一种风格,通过嵌套的风格表示层级关系,一个源文件中可以声明多个 package,子

    2024年01月25日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包