Scala实战详解之第9讲 Scala的内部类实战详解

package com.dt.scalaInAction.demo_009

class Outer (val name : String) {  outer =>  //定义外部类名称 用于内部类调用
    class Inner(val name : String) {
        def foo(b : Inner) {
            println("Outer:"+outer.name+" Inner:"+b.name)
        }
    }
}

/**
 * Scala的内部类实战详解
 * 
 * Scala的在内部类 和Java的内部类有很大不同
 *      Java中的内部类是从属于外部类的
 *      Scala中的内部类是从属于对象的    new出外部类对象 的每一个内部类都是不同的(内部类隶属于外部类的实例本身)
 */
object OOPInnerClass {
    def main(args: Array[String]): Unit = {
        val outer1 = new Outer("Spark")
        val outer2 = new Outer("Hadoop")
        
        /**
         * 内部类的方式和Java不同 Java是 outer1.new Inner()
         */
        val inner1 = new outer1.Inner("Scala");
        val inner2 =  new outer2.Inner("Java");
        
        inner1.foo(inner1)
        inner2.foo(inner2)
        
        //inner1.foo(inner2)  //错误 但在Java中是可行的
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值