第8讲 构造器

温故而知新 DT大数据梦工厂第8讲 构造器
百度云盘连接http://yun.baidu.com/share/home?uk=4013289088#category/type=0
//class Teacher {
// var name : String = _
// private var age = 27
// private[this] val gender = "male"
//
// def this(name:String){
// this
// this.name = name
// }
//
// def sayHello(){
// println(this.name + ":" + this.age + " : " + this.gender)
// }
//}

class Teacher private (val name : String, val age : Int){
println("This is the primary constructor!!!")
var gender : String = _
println(gender)
def this(name : String, age : Int, gender : String){
this(name, age)

this.gender = gender
}
}

class Outer(val name: String) { outer =>
class Inner(val name: String){
def foo(b:Inner) = println("Outer: " + outer.name +
" Inner: " + b.name)
}

}
object OOPInScala{
def main(args: Array[String]) {

val outer1 = new Outer("Spark")
val outer2 = new Outer("Hadoop")
val inner1 = new outer1.Inner("Scala")
val inner2 = new outer2.Inner("Java")
inner1.foo(inner1);
inner2.foo(inner2);

// val p = new Teacher
// p.name = "Spark"
//
// p.sayHello

// val p = new Teacher("Spark", 5)
// println(" : " + p.age)

// val p = new Teacher("Spark", 5 , "male")
// println(" : " + p.age)

}

}

时间: 2024-07-30 23:52:07

第8讲 构造器的相关文章

ArrayList源码解析

ArrayList源码解析 ArrayList简介: ArrayList 是list接口的一个常用实现类.它的对象可以认为是一维数组的"类版本".我们很快就可以看到,ArrayList 对象可以看做是一维数组的改良版本.类似于数组,ArrayList 对象支持元素的随机访问:也就是说,只要给出元素的索引,任何元素的访问时间都是常数.但是同数组不同的是,ArrayList 对象的大小在程序执行的过程中可以自动进行调整,并且ArrayList对象具有在任何索引位置插入和删除对象的方法,而数

疯狂java学习笔记之面向对象-定义类、方法、构造器

Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. java程序中,类是最小的程序单位 - 所有的java程序都必须从定义类开始 定义类的语法格式: [修饰符]  class  类名{ //0 ~ N 个 Field 定义 //0 ~ N 个 方法定义 //0 ~ N个 构造器定义 } 一个类中最多只能出现五种成分:Field.方法.构造器 一个类最常见

多个构造器参数使用构建器

标题一眼看过去可能不是很明白要讲什么,先来看看下面一段代码. 1 package example; 2 3 /** 4 * 重叠构造器 5 * @author yulinfeng 6 * Feb 13, 2017 7 */ 8 public class Student1 { 9 private String name; 10 private int age; 11 private String sex; 12 13 public Student1(String name) { 14 this(n

《effective java》读书札记第三条用私有构造器或者枚举类型强化Singleton属性

Singleton指仅仅被实例化一次的类.一般用来搞那些创建非常耗资源或者要求系统中只能有一个实例的类.这个非常常用.记得以前实习面试的时候就有这个面试题.一般采用的方法是将构造器私有化,然后提供一个static变量,再提供一个static的public方法用来返回static实例: //Singleton with static factory public class Elvis { private static final Elvis INSTANCE = new Elvis(); pri

构造器内部的多态方法的行为详解(附源码)

前言 构造器调用的层次结构带来了一个有趣的两难问题.如果在一个构造器的内部调用正在构造的对象的某个动态绑定方法,那会发生什么情况呢?在一般的方法内部,动态绑定的调用是在运行时才决定的,因为对象无法知道它是属于方法所在的那个类,还是属于那个类的导出类. 如果要调用构造器内部的一个动态绑定方法,就要用到那个方法的被覆盖后的定义.然而,这个调用的效果可能相当难于预料,因为被覆盖的方法在对象被完全构造之前就会被调用.这可能会造成一些难于发现的隐藏错误. 从概念上讲,构造器的工作实际上是创建对象(这并非是

(二)构造器模式与模块模式

这一篇主要讲述构造器(Constructor)模式和模块(Module)模式以及相关的变体模式,例子是JavaScript代码. 构造器(Constructor)模式 对象构造器用于创建特定类型的对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性和方法的值.概念并没什么好说的,这种模式最是简单,虽然名字是那么吊炸天,但内容没什么,看下面例子就可明白. 基本构造器 function Car( model, year, miles ) { this.mode

jQuery分离构造器

http://www.imooc.com/code/3401 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象   B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象)   C.执行构造函数中的代码   D.返回这个新对象 最后一点就说明了,我们只要返回一个新对象即可.其实new操作符主要是把原型链跟实例的this关联起来,这才是最关键的一点,所以我们如果需要原型链就必须要new操作符来进行处理.否则this则变成window对象了. 下面这个例子,console结

第六讲 自定义数据类型

为什么要使用自定义数据类型呢?原因很简单,在现实生活中,比如一个学生他有姓名,学号,年龄,身高,出生年月,而在上一讲中,我们提到的数据类型无法满足现实生活需求,这个时候,自定义数据类型该派上用场了,我们可以定一个学生类型.从而达到我们的需求了.自定义数据类型又可以分为子界类型,数组类型,记录类型,枚举类型,指针类型,集合类型等等... 下面分别对这些数据类型讲解 子界类型 子界类型定义了某种类型的取值范围(因此定名subrange).你可定义整数类型的子界类型,如取值从1到10或从100到100

Swift 构造器探究

Swift 构造器探究 什么时候要用构造器? 对于类(Class) 其实在其他语言中,比如说Java对于属性的初始化没有严格的要求.甚至在Model层只有对应属性的get,set访问器.而在Swift中无论是对于结构体(Structure)还是类(Class),如果其中存在存储属性(stored property),那么必须在合适的地方给它赋初始值,也就是初始化.不能让它们成为不确定的状态,即没有初始化.关于初始化,Swift提供了两种方式.一种是属性定义的时候初始化,也就是赋默认值. 第二种是