Scala类和对象

阅读: 评论:0

Scala类和对象

Scala类和对象

一、Scala类和对象

类是对象的抽象,对象是类的具体实例。类是抽象的,不占用内存,二对象是具体的,占用存储空间,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继承

scala继承一个基类跟java很相似,但是有些不同:

  1. 重写一个非抽象方法必须使用override修饰符
  2. 只有主构造函数才可以往基类的构造函数里写参数。
  3. 在子类中重写父类方法时,你需要使用override关键字
    案例演示:
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单例对象

在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小时内删除。

标签:对象   Scala
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23