类是对象的抽象,对象是类的具体实例。类是抽象的,不占用内存,二对象是具体的,占用存储空间,new出来的对象,都在堆当中。
类与对象举例:手机在制作之前肯定是需要一张图纸的,那么那张图纸就是类,一个手机图纸,在不同的商家甚至是统一商家,可以造出不同的手机。
案例演示:
class Student(name:String,age:Int,sex:String) {var names:String=namevar ages:Int=agevar sexs:String=sexdef study(name:String,age:Int)={println(ages+"的"+names+"正在看书")}
}
scala继承一个基类跟java很相似,但是有些不同:
class Student(name:String,age:Int,sex:String) {var names:String=namevar ages:Int=agevar sexs:String=sexdef study(name:String,age:Int)={println(ages+"的"+names+"正在看书")}
}class manStudent(name:String,age:Int,sex:String) extends Student(name:String,age:Int,sex:String){override def study(name: String, age: Int): Unit ={println(age+"的,姓名为:"+name+"的男孩正在打篮球")}
}
在scala中没有static这个东西,但是也不能造成功能缺失,scala为我们提供了单例模式的实现方法,那就是使用关键字object。
Scala中使用单例模式的时候,不仅要定义类,还要定义同名的object对象,object对象和类的区别是,他不能带有参数。class类带有的参数,和java中的构造函数类似。
当单例对象和莫各类同一个名称的时候,会被称作为半生对象(companion object)。但是秋安提条件是这两个东西得是在同一个类中。
案例演示:
class Student(name:String,age:Int,sex:String) {var names:String=namevar ages:Int=agevar sexs:String=sexdef study(name:String,age:Int)={println(ages+"的"+names+"正在看书")}
}object Test{def main(args: Array[String]): Unit = {val student=new Student("lyq",22,"male")def func={println(student.names)println(student.ages)}func}
}
半生对象就是前文中介绍的,同一个类中的class类和object类名字一样,那么object就成为半生对象,半生对象的好处就是创建对象的时候,不用在去new对象,之前创建就可以。
案例演示:
class Person(uname:String,uage:Int) {println("!!!!!!!!!!!!!!!!Person!!!!!!!!!!!!!!!!!!")var name=unamevar age=uagevar gender=""println("##############Person##################")def this(name:String){this(name,18)println("@@@@@@@@@@@@@@@Person@@@@@@@@@@@@@@@@")}def this(name:String,age:Int,ugender:String){this(name,18)gender=ugender}def printMsg():Unit={println(name,age)}
}object Person{println("&&&&&&&&&&& Object Person &&&&&&&&&&&&&&")var address:String="JiangSu nanjing"def apply(uname: String, uage: Int): Unit={println(uname,uage)}def apply(uname: String, uage: Int,gender:String): Person = new Person(uname, uage,gender)def apply(uname: String): Person = new Person(uname)def main(args: Array[String]): Unit = {val person=new Person("zs",21)val person2=Person("zs")val person3=Person("zs",21,"男")}
}
样例类是用case修饰的类,可以用于匹配模式
案例演示:
case class ClassName(name:String,age:Int)object MatchTest{def main(args: Array[String]): Unit = {//创建不同的对象val kb07 = new ClassName("kb07",4)val kb05 = new ClassName("kb05",8)val kb02 = new ClassName("kb02",14)val list = List(kb07,kb05,kb02)//用for循环match去匹配输出不同的值。只有用了case的类才能进行匹配for(classname <- list){classname match {case ClassName("kb07",4)=>println("kb07")case ClassName("kb05",8)=>println("kb05")case ClassName(name,age)=>println("name:"+name," age:"+age)}}}
}
本文发布于:2024-01-31 08:01:32,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170665929526943.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |