内部类顾名思义就是在类里面又定义了一个类,但是两者的内部类却有很大的区别,有内部类就有外部类。
在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"))
}
}
注:本文主要来自于老师笔记,如有侵权,请联系删除