时间比较紧,所以直接上代码,解释在代码中:
/**
* @author hnyd
*/
class HelloClass {
}
//scala 中都是public类
class Person{ //不带构造函数函数的
var name:String=_ //会生成getter和setter
val age=10 //只会生成getter
//添加private[this]声明的变量,只能在类的内部使用
private[this] val gendar="male"
}
//这是一个主构造器
//1、定义一个主构造器后,其颞部声明的变量,会生成相应的字段
//2、类中所有的内容会执行一遍
//3、如果变量的前面没有带val或var就相当于在字段前面添加了private[this],
//只能在内部使用,不能实例化调用
class Person2(var name:String,val age:Int){
println("this is a primary constructor")
var gender:String=_
val school=""
//附属构造器
//附属构造器的名称必须是this
//附属构造器中必须首先调用子构造器或附属构造器
def this(name:String,age:Int,gender:String){
this(name,age)
this.gender=gender
println("this a 附属 constructor")
}
}
//继承
//关于override的使用,不单单对方法使用,还使用用于字段
class Student(name:String,age:Int,val address:String) extends Person2(name,age){
println("this is a subclass of Person2")
override val school=""
override def toString="override toString...."
}
object HelloClass{
def main(args:Array[String]){
val p=new Person //没有构造函数可以省略"()"
p.name="jack"
println(p.name+":"+p.age)
println()
val p2=new Person2("jack",20)
println(p2.name+":"+p2.age)
println()
val p2_1=new Person2("jack",23,"male")
println(p2_1.name+":"+p2_1.gender)
println()
val s1=new Student("jack",23,"henan")
println(s1.name+":"+s1.age+":"+s1.address)
println(s1.toString)
println()
}
}
坚持是必须的,希望你多写多练,坚持