scala学习笔记(3)

1 类

(1)

scala把主构造函数放到类的定义中,让定义字段及相应方法变得简单起来。

class People(age: Int, name: String)

scala会自动将这个类变成public,默认的就是public. 如果我们将age这个字段设为 val age: Int,则scala将其定义成为一个private final 字段,并为它创建一个public方法number() 用以取值。如果var name: String,则定义name为private字段,并同时提供public的getter和setter方法。如果不做修饰,则设定为private的getter和setter方法。

class People{
  println("Hello")
}

当new  People时会显示输出结果:Hello

除了主构造函数,还可以通过this()副方法构造

class  People(age: Int, name: String){
    private var address: String = _
    def this(age: Int, name: String, add: String){
        this(age,name)
        address = add
    }
}

  

(2) 单例

单例实例对象无法初始化,所以不能给它的主构造函数传递参数

object test{
	def calSum(start_index:Int, end_index:Int, call_fun: Int => Int) = {
		var result = 0
		for (i <- start_index to end_index){
			result += call_fun(i)
		}
		result
	}
	def main(args: Array[String]){
		if (args.length > 0) {
		  for (line <- Source.fromFile(args(0)).getLines)
		    println(line.length + " " + line)
		}
		else
		Console.err.println("Please enter filename")
	}

}

(3)继承

两点需要注意a) 重写父类方法需要显示override关键字,b)只有主构造函数才能往基类构造函数中传递参数

class  People(age: Int, name: String){
    override def toString() = {
    	"age: "+age + " name: "+name
    }
}

class Man(age: Int, name: String, sex: String) extends People(age,name){
	override def toString() = {
		"age: "+age + " name: "+name + " sex: "+sex
	}
}

简单点

class  People(age: Int, name: String){
    override def toString = "age: "+age + " name: "+name

}

class Man(age: Int, name: String, sex: String) extends People(age,name){
	override def toString = "age: "+age + " name: "+name + " sex: "+sex
}

  

  

时间: 2024-08-02 15:11:56

scala学习笔记(3)的相关文章

Scala学习笔记及与Java不同之处总结-从Java开发者角度

Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方.以下列举了部分,但令人印象深刻的Scala语言的不同之处,具体的代码演示样例及具体阐述见下文. ? Scala中可直接调用Java代码,与Java无缝连接. 语句能够不用";"结束.且推荐不适用";". 变量声明时以var或va

原创:Scala学习笔记(不断更新)

Scala是一种函数式语言和面向对象语言结合的新语言,本笔记中就零散记下学习scala的一些心得,主要侧重函数式编程方面. 1. 以递归为核心控制结构. 实现循环处理的方式有三种:goto,for/while,递归,其中用goto实现循环已经在现代语言中被放弃,而for/while形式的结构化编程成为主流,而递归作为另一种方案,则长期只流行在函数式编程的小圈子中. 递归被主流编程界所担心的主要是过深的调用栈,甚至以前的课堂上我们还亲自尝试过将递归改写为循环,但是现代函数式编程语言中,通过尾递归(

Scala学习笔记及与Java不同之处总结-从Java开发人员角度

Scala与Java具有许多相似之处,但又有许多不同.这里主要从一个Java开发人员的角度,总结在使用Scala的过程中所面临的一些思维转变.这里只是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方.下面列举了部分,但令人印象深刻的Scala语言的不同之处,具体的代码示例及详细阐述见下文. ? Scala中可直接调用Java代码,与Java无缝连接: 语句可以不用";"结束,且推荐不适用";": 变量声明时以var或val开头

Scala学习笔记一之基础语法,条件控制,循环控制,函数,数组,集合

前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: 1:声明val变量:可以使用val来声明变量,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量: 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变. 3:指定类型:无论声明val变量还是声明var变量.都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型

Scala学习笔记-环境搭建以及简单语法

关于环境的搭建,去官网下载JDK8和Scala的IDE就可以了,Scala的IDE是基于Eclipse的. 下面直接上代码: 这是项目目录: A是scala写的: package first import scala.collection.mutable.ListBuffer object A { def main(args: Array[String]) { print("Hello,Scala");//学习程序设计的第一句 println("---");//pr

scala 学习笔记(04) OOP(上)

一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person { var name: String = _ /** * 从构造器 * @param name */ def this(name: String) = { this //注意:从构造器,必须先调用主构造器 this.name = name; } override def toString = { "

Scala并发编程实战初体验及其在Spark源码中的应用解析之Scala学习笔记-56

package com.leegh.actor import scala.actors.Actor /** * @author Guohui Li */object First_Actor extends Actor { def act() { for (i <- 1 to 10) { println("Step : " + i) println(Thread.currentThread().getName) Thread.sleep(2000) } }} object Seco

Scala中复合类型实战详解之Scala学习笔记-44

package com.leegh.parameterization import com.leegh.parameterization.Compound_Type /** * @author Guohui Li */ trait Compound_Type1;trait Compound_Type2;class Compound_Type extends Compound_Type1 with Compound_Type2object Compound_Type { def compound_

Scala学习笔记-11

package com.leegh.oop import scala.io.Source /** * @author Guohui Li */object FunctionOps { def main(args: Array[String]) { val width = args(0).toInt for (arg <- args.drop(1)) processData(arg, width) var increase = (x: Int) => x + 1 increase(10) inc

Scala 学习笔记(2)之类和对象

Scala 的类大抵和 Java 是类似的,简单的例子如下: class MyClass { var myField : Int = 0; def this(value : Int) = { this(); this.myField = value; } def getMyField() : Int = { return this.myField; } def addToMyField(value : Int) { this.myField += value; } } 如果好奇,可以把编译后的代