Java与Scala的内部类异同点

内部类顾名思义就是在类里面又定义了一个类,但是两者的内部类却有很大的区别,有内部类就有外部类。

在java中内部类分为:成员内部类,匿名内部类,静态内部类,方法内部类。

意义:

        1.内部类往往时封装在外部类里面的,除外部类外是不允许其他类访问

        2.内部类方法一般能调用外部类的所有(属性,方法),包括private的东西,但是如果调用外部类的static,只能用内部类的static

        3.内部类继承的类或实现的接口,外部类也可以调用(儿子有的东西,老子肯定也有)

      

 

Scala中,你几乎可以在任何语法结构中内嵌任何语法结构(官网说的),就是可以在类里面嵌套类,在方法里嵌套方法,在内部类如果访问外部类,可以用外部类.this

 

话不多说,直接上干货:

 

//创建一个学生类

class Student {
  /**
    * 准备一个容器,用于存储内部类的实例
    */
  @BeanProperty var members = new ArrayBuffer[Member]()

  /**
    * 内部类
    * @param name
    */
  class Member(var name: String) {
    /**
      * 显示名字
      */
    def show = println("名字是:" + name)

    override def toString = s"Member($name)"
  }

  /**
    * 学习
    */
  def study = {
    println("学生学习中。。。。")
  }

  /**
    * 添加成员
    * @param name
    */
  def addMember(name:String)={
    //①构建Member的实例
    var member = new Member(name)

    //②将实例添加到容器中
    members +=member

    //③返回新增的Member实例
    member
  }
}

---------------------------------------------------------------------------------------------------

object StudentTest {
  def main(args: Array[String]): Unit = {
     //构建Student的实例
     var stu = new Student

    // 添加两个成员
    println ("成功新增的元素是:"+stu.addMember("二狗子"))
    var jackMember= stu.addMember("狗剩子")

    //输出所有的成员信息
    stu.getMembers.foreach(x=>print(x.name+"\t"))

    println("\n________________________________________\n")
    var stu2 = new Student
    stu2.addMember("Jack")
    stu2.getMembers.foreach(x=>print("~>"+x.name+"\t"))
  }
}

 

 

注:本文主要来自于老师笔记,如有侵权,请联系删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值