直接上代码说明:
object ClassScala { def main(args: Array[String]): Unit = { val obj = new University("a",1,1) println(obj) val stu = new Student("baby","女") /** * Array的apply方式创建对象 * def apply(x: Int, xs: Int*): Array[Int] = { val array = new Array[Int](xs.length + 1) array(0) = x var i = 1 for (x <- xs.iterator) { array(i) = x; i += 1 } array } */ val arr =Array(1,2,3,4,5) //使用apply来创建对象 val apply = ApplyScala("test") apply.info //内部类 val outer1 = new OuterClass("outer1") val outer2 = new OuterClass("outer2") val inner1 = new outer1.InnerClass("inner1")//必须使用外部类的实例对象创建内部类 val inner2 = new outer2.InnerClass("inner2") println(inner1) println(inner2) /** * 我inner2也是一个InnerClass对象 为什么编译出错? * 其实定义在内部类方法里面的InnerClass其实已经指定了只能传递当前outer1所创建的InnerClass * 所以传递outer2.InnerClass创建的对象是不行的 */ inner1.go(inner2)// Error:(46, 15) type mismatch;found : outer2.InnerClass required: outer1.InnerClass inner1.go(inner2) inner1.go(inner1)// right } } /** * 伴生类 * 默认构造函数 * @param name 姓名 * @param age 年龄 * @param sex 性别 */ class University (var name:String, var age:Int, var sex:Int){ //默认构造函数 private val no = University.studentNo private var like:String = _ def this(name:String, age:Int, sex:Int, like:String) {//重载构造函数 this(name, age, sex) this.like = like } def compareAge(other:University) = { this.age > other.age } override def toString: String = { //重写toString函数 "["+this.no +"[["+this.name +"]["+this.age+"]["+this.sex+"]["+this.like+"]" } } /** * 伴生对象 */ object University{ // private var no:Int = _ def studentNo = { no += 1 no } } /** * 在类名字后面加上private修饰表示不能用默认的构造函数去调用 * 也就是 new Student("baby") 这种方式编译会报错 * @param name */ class Student private(name:String){ private var sex:String = _ private[this] var age:Int = _ def this(name:String, sex:String){ this(name) this.sex = sex } def this(name:String, sex:String, age:Int){ this(name, sex) this.age = age } def age_ = age /** * 我们设置age是私有的 为什么这里可以直接调用 而在我们new 出来的对象 为什么不能直接这样操作? * age设置private范围其实是类的内部能见 * 如果要设置age只能在当前对象可见 我们只需要写成 private[this] var age * @param other * @return */ def compareAge(other:Student) = { //this.age > other.age this.age > other.age_ } } class ApplyScala(des: String) { def info = println("使用伴生对象的方法:"+ApplyScala.getNo +"---"+des) } object ApplyScala{ private var no:Int = 0 def getNo = { no += 1 no } /** * 定义apply方法,实例化伴生类 * @return */ def apply(des: String): ApplyScala = { println("使用apply来实例化伴生类") new ApplyScala(des) } } /** * 内部类 * @param name */ class OuterClass(val name:String){ outer => class InnerClass(val name:String){ /** * inner这个参数非常有特点 看调用 * @param inner */ def go(inner:InnerClass) = println(outer.name +"||" + inner.name) override def toString: String = { outer.name + " create " + this.name } } }
相关推荐
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
Scala学习笔记,大全笔记
学习scala笔记,学习scala笔记,学习scala笔记,学习scala笔记,学习scala笔记,
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-...
该文档详细的讲述了Scala的基础操作方法和高级使用方法
scala 学习笔记 方法 函数 类 对象 特质 推断 注解 编译 隐式转换 尾递归 元组 列表
scala中没有Java中的静态成员,我们想要定义类似于Java的static变量、static方法,就要使用到scala中的单例对象——object. 定义单例对象 单例对象表示全局仅有一个对象(类似于Java static概念) 定义单例对象和...
本书介绍Scala基本语法、构造。以及如何将您已经知道的复制java语法转换为Scala,了解Scala除了javabecome之外还提供了哪些功能编程概念和惯用技巧和建议,这些技巧和建议在将现有java项目转换为Scala时非常有用
Scala是一门类Java的编程语言,它结合了面向对象编程和函数式编程。Scala是纯面向对象的,每个值都是一个对象,对象的类型和行为由类定义,不同的类可以通过混入(mixin)的方式组合在一起。
Learn Scala is split into four parts: a tour of Scala, a comparison between Java and Scala, Scala-specific features and functional programming idioms, and finally a discussion about adopting Scala in...
本书是Scala编程语言的权威教程,由该语言的设计师Martin Odersky共同编写。
[Scala学习笔记-中文资料] 从java角度看Scala
ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673
scala-learn:scala学习笔记