环球快消息!Scala进阶之路-面向对象编程之类的成员详解
Scala进阶之路-面向对象编程之类的成员详解
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
(资料图)
一.Scala中的object对象及apply方法
1>.scala 单例对象
在Scala中,是没有static这个东西的,但是它也为我们提供了单例模式的实现方法,那就是使用关键字object。注意:object 对象是不能带参数的。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 /** 9 * 1>.在scala中的object是一个单例对象,没办法new,因为它的构造方法被私有化了10 * 2>.Object中定义的成员变量和方法都是静态的11 * 3>.可以通过"类名.方法"或者 "对象名.成员变量"12 *13 */14 object ScalaStatic {15 val name:String = "尹正杰"16 var age:Int = 1817 18 def sayHello(): Unit ={19 println("Hi,I"m yinzhengjie !")20 }21 22 //注意:如果调用者没有指定方法,默认会调用apply方法哟!23 def apply(habby:String) = {24 println(s"我的爱好是:${habby}")25 }26 }
2>.接下来我们一起测试如何访问一个Object的成员变量和方法,具体代码如下:
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 object Demo { 9 def main(args: Array[String]): Unit = {10 //直接“类名.成员变量”就可以访问非私有的变量11 var res1 = ScalaStatic.age12 print(s"res1=====> ${res1}\n")13 //对单例模式的类中的非私有成员变量进行修改操作,但前提是这个变量需要用关键字var来声明14 ScalaStatic.age = 2615 print(s"res1=====> ${res1}\n")16 17 ScalaStatic.sayHello()18 19 //如果没有指定方法,默认会调用apply方法哟!20 ScalaStatic.apply("篮球")21 ScalaStatic("乒乓球")22 }23 }
3>.验证Object编译后文件内容
二.Scala中类的定义及构造器的使用
1>.子定义Scala的Teacher类
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass; 7 8 /** 9 * 关于构造器的注意事项:10 *11 * 1>.在Scala中定义类用class关键字修饰,这个类名称后面的构造器叫主构造器。类的主构造器中的属性会定义成类的成员变量。一个类12 * 只能有一个主构造器,但是可以有多个辅助构造器;13 * 2>.如果住构造器中成员属性没有val或者var修饰的话,该属性不能被访问,相当于对外没有提供get方法;14 * 3>.如果成员属性使用var修饰的话,相当于对外提供了getter和setter方法;15 * 4>.如果成员属性使用val修饰的话,相当于对外只提供了getter方法,因为val用于修饰不可变数据类型,类似与Java中定义常量的关键字“final”;16 * 5>.辅助构造器是完成赋值操作的,辅助构造器是内部需要调用主构造器或者其它辅助构造器;17 */18 class Teacher(var name:String,val age:Int) {19 20 //定义sex和blog成员变量,让其默认值为null,我们可以用"_"表示为null。21 var sex:String = _22 var blog:String = _23 24 //定义辅助构造器一,辅助构造器需要调用主构造器25 def this(name:String,age :Int,sex:String)={26 //在辅助构造器中必须先调用主构造器27 this(name,age)28 this.sex = sex29 }30 31 //定义辅助构造器二,辅助构造器如果不调用主构造器那么必须得调用其它的辅助构造器32 def this(name:String,age:Int,sex:String,blog:String)={33 //调用其它辅助构造器,在上面的一个辅助构造器中调用了主构造器34 this(name,age,sex)35 this.blog = blog36 }37 38 }
2>.使用Scala的单列类调用自定义Teacher类
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 object Demo { 9 10 def main(args: Array[String]): Unit = {11 //调用带有两个参数的主构造器12 val t1 = new Teacher("尹正杰",18)13 println(s"姓名:${t1.name},年龄:${t1.age}")14 15 //调用带有3个参数的辅助构造器16 val t2 = new Teacher("尹正杰",20,"男")17 println(s"姓名:${t2.name},年龄:${t2.age},性别:${t2.sex}")18 19 //调用带有4个参数的辅助构造器20 val t3 = new Teacher("尹正杰",26,"男","https://www.cnblogs.com/yinzhengjie")21 println(s"姓名:${t3.name},年龄:${t3.age},性别:${t3.sex},博客:${t3.blog}")22 }23 }24 25 26 27 /*28 以上代码输出几个如下:29 姓名:尹正杰,年龄:1830 姓名:尹正杰,年龄:20,性别:男31 姓名:尹正杰,年龄:26,性别:男,博客:https://www.cnblogs.com/yinzhengjie32 */
三.Scala类的访问权限
1>.Scala类的构造器访问权限
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass; 7 8 /** 9 * 关于构造器的访问权限:10 * 在构造器前加修饰权限就可以设置相应的相应的访问权限,如果你想让主构造器私有化,只需要在主构造器前加private修饰即可。当然这种方法也适用于辅助构造器11 */12 class Teacher private (var name:String,val age:Int) {13 14 //定义sex和blog成员变量,让其默认值为null,我们可以用"_"表示为null。15 var sex:String = _16 var blog:String = _17 18 //定义辅助构造器一,辅助构造器需要调用主构造器,我们想要将这个辅助构造器私有化,只需要在def前面加一个private修饰符即可。19 private def this(name:String,age :Int,sex:String)={20 //在辅助构造器中必须先调用主构造器21 this(name,age)22 this.sex = sex23 }24 25 //定义辅助构造器二,辅助构造器如果不调用主构造器那么必须得调用其它的辅助构造器26 def this(name:String,age:Int,sex:String,blog:String)={27 //调用其它辅助构造器,在上面的一个辅助构造器中调用了主构造器28 this(name,age,sex)29 this.blog = blog30 }31 }
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 object Demo { 9 10 def main(args: Array[String]): Unit = {11 //调用带有4个参数的辅助构造器12 val t3 = new Teacher("尹正杰",26,"男","https://www.cnblogs.com/yinzhengjie")13 println(s"姓名:${t3.name},年龄:${t3.age},性别:${t3.sex},博客:${t3.blog}")14 }15 }16 17 18 19 /*20 以上代码输出几个如下:21 姓名:尹正杰,年龄:26,性别:男,博客:https://www.cnblogs.com/yinzhengjie22 */
Demo.scala 文件内容(调用辅助构造方法案例展示)
2>.Scala类的成员属性访问权限
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass; 7 8 /** 9 * 关于类的成员属性访问权限 :10 * 如果类的主构造器中成员变量是private修饰的,它的setter和getter方法都是私有的,外部不能访问11 */12 class Teacher(var name:String,private val age:Int) {13 14 }
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 object Demo { 9 10 def main(args: Array[String]): Unit = {11 //调用带有4个参数的辅助构造器12 val t1 = new Teacher("尹正杰",26)13 //由于主构造方法的age字段被私有化了,因此就没法通过getter或者setter方法访问啦!因此我们只可以访问name字段!14 println(s"姓名:${t1.name}")15 }16 }17 18 19 20 /*21 以上代码输出几个如下:22 姓名:尹正杰23 */
Demo.scala 文件内容(调用主构造方法案例展示)
3>.Scala中的类的访问权限(可见性)
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass; 7 8 /** 9 *10 * 类的访问权限11 * 类的前面加上private[this] 标识这个类在当前包下都可见,当前包下的子包不可见12 * 类的前面加上private[包名] 表示这个类在当前包及其子包下都可见13 */14 private[scalaClass] class Teacher(var name:String,val age:Int) {15 16 //定义sex和blog成员变量,让其默认值为null,我们可以用"_"表示为null。17 var sex:String = _18 var blog:String = _19 20 //定义辅助构造器一,辅助构造器需要调用主构造器,我们想要将这个辅助构造器私有化,只需要在def前面加一个private修饰符即可。21 private def this(name:String,age :Int,sex:String)={22 //在辅助构造器中必须先调用主构造器23 this(name,age)24 this.sex = sex25 }26 27 //定义辅助构造器二,辅助构造器如果不调用主构造器那么必须得调用其它的辅助构造器28 def this(name:String,age:Int,sex:String,blog:String)={29 //调用其它辅助构造器,在上面的一个辅助构造器中调用了主构造器30 this(name,age,sex)31 this.blog = blog32 }33 }
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass.scala 7 8 import cn.org.yinzhengjie.scalaClass.Teacher 9 10 object Demo {11 12 def main(args: Array[String]): Unit = {13 //调用带有4个参数的辅助构造器14 val t1 = new Teacher("尹正杰",26,"男","https://www.cnblogs.com/yinzhengjie")15 println(s"姓名:${t1.name},年龄:${t1.age},性别:${t1.sex},博客:${t1.blog}")16 }17 }18 19 20 21 /*22 以上代码输出几个如下:23 姓名:尹正杰,年龄:26,性别:男,博客:https://www.cnblogs.com/yinzhengjie24 */
Demo.scala 文件内容(调用辅助构造方法案例展示)
四.Scala中的伴生对象
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass; 7 8 /** 9 * 关于构造器的注意事项:10 * 1>.在Scala中定义类用class关键字修饰,这个类名称后面的构造器叫主构造器。类的主构造器中的属性会定义成类的成员变量。一个类11 * 只能有一个主构造器,但是可以有多个辅助构造器;12 * 2>.如果住构造器中成员属性没有val或者var修饰的话,该属性不能被访问,相当于对外没有提供get方法;13 * 3>.如果成员属性使用var修饰的话,相当于对外提供了getter和setter方法;14 * 4>.如果成员属性使用val修饰的话,相当于对外只提供了getter方法,因为val用于修饰不可变数据类型,类似与Java中定义常量的关键字“final”;15 * 5>.辅助构造器是完成赋值操作的,辅助构造器是内部需要调用主构造器或者其它辅助构造器;16 *17 * 类的成员属性访问权限:18 * 如果类的主构造器中成员属性是private修饰的,它的set 和 get方法都是私有的,外部不能访问19 *20 *21 * 类的构造器访问权限22 * 在构造器前加修饰权限23 * private 在主构造器之前,这说明该类的主构造器是私有的,外部类或者外部对象不能访问24 * 也适用于辅助构造器25 *26 * 类的访问权限27 * 类的前面加上private[this] 标识这个类在当前包下都可见,当前包下的子包不可见28 * 类的前面加上private[包名] 表示这个类在当前包及其子包下都可见29 */30 private[scalaClass] class Teacher(var name:String,val age:Int) {31 //定义sex和blog成员变量,让其默认值为null,我们可以用"_"表示为null。32 var sex:String = _33 var blog:String = _34 //定义辅助构造器一,辅助构造器需要调用主构造器,我们想要将这个辅助构造器私有化,只需要在def前面加一个private修饰符即可。35 private def this(name:String,age :Int,sex:String)={36 //在辅助构造器中必须先调用主构造器37 this(name,age)38 this.sex = sex39 }40 //定义辅助构造器二,辅助构造器如果不调用主构造器那么必须得调用其它的辅助构造器41 def this(name:String,age:Int,sex:String,blog:String)={42 //调用其它辅助构造器,在上面的一个辅助构造器中调用了主构造器43 this(name,age,sex)44 this.blog = blog45 }46 }47 48 /**49 * 注意:“object Teacher”是“class Teacher”的伴生对象50 */51 object Teacher{52 53 /**54 * 定义apply方法帮我们创建出“class Teacher”的实例,如果调用者在没有指明具体方法时,默认就会调用该方法。55 */56 def apply(name: String, age: Int): Teacher = {57 // 初始化工作58 new Teacher(name, age, "男", "http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/")59 }60 61 62 def main(args: Array[String]): Unit = {63 //我们直接调用伴生对象的apply方法,当然apply方法我们可以省略不写。64 val t1 = Teacher("尹正杰",18)65 println(s"姓名:${t1.name},年龄:${t1.age},性别:${t1.sex},博客:${t1.blog}")66 67 //调用带有4个参数的辅助构造器68 val t2 = new Teacher("尹正杰",26,"男","https://www.cnblogs.com/yinzhengjie")69 println(s"姓名:${t2.name},年龄:${t2.age},性别:${t2.sex},博客:${t2.blog}")70 }71 }72 73 74 /*75 以上代码执行结果如下 :76 姓名:尹正杰,年龄:26,性别:男,博客:https://www.cnblogs.com/yinzhengjie77 */
五.Scala特质Trait使用
1>.Scala特质Trait定义使用
特质(Trait)相当于Java中的Interface,只不过特质(Trait)要比Java中的interface要强大的多,因为特质(Trait)可以定义已经实现的方法,也可以定义没有实现的方法。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 9 /**10 * Scala的中的接口叫做特质,关键字为trait。11 * 在Scala中也没有“implements”关键字,只有“extends”关键字12 * 在Scala特质中可以定义有实现的方法,也可以定义没有实现的方法13 */14 trait ScalaTrait {15 /**16 * 定义有实现的方法17 */18 def sayHello()={19 println("I"m Yinzhengjie!")20 }21 /**22 * 定义没有实现的方法23 */24 def playGame(name:String)25 }
ScalaTrait.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 class ScalaTraitImpl extends ScalaTrait { 9 10 /**11 * 如果特质中playGame方法没有实现的话,子类在实现的时候可以不加override关键字也可以加12 */13 def playGame(name: String): Unit = {14 println(s"${name} 正在玩游戏!")15 }16 17 /**18 * 如果特质中某个方法有具体的实现,在子类继承重写的时候,必须使用override关键字19 */20 override def sayHello(): Unit = {21 //我们的重写过程需要其实就是调用父类的方法22 super.sayHello()23 }24 25 }26 27 /**28 * 注意:“object ScalaTraitImpl”是“class ScalaTraitImpl”的伴生对象29 */30 object ScalaTraitImpl{31 def main(args: Array[String]): Unit = {32 val s1 = new ScalaTraitImpl()33 s1.sayHello()34 s1.playGame("尹正杰")35 }36 }37 38 39 /*40 以上代码执行结果如下:41 I"m Yinzhengjie!42 尹正杰 正在玩游戏!43 */
2>.Scala中混入特质的两种方式
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 9 /**10 * Scala的中的接口叫做特质,关键字为trait。11 * 在Scala中也没有“implements”关键字,只有“extends”关键字12 * 在Scala特质中可以定义有实现的方法,也可以定义没有实现的方法13 */14 trait ScalaTrait {15 /**16 * 定义有实现的方法17 */18 def sayHello()={19 println("I"m Yinzhengjie!")20 }21 /**22 * 定义没有实现的方法23 */24 def playGame(name:String)25 }
ScalaTrait.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 trait Bird { 9 /**10 * 定义有实现的方法11 */12 def fly(name:String): Unit ={13 println(s"${name} 正在天上飞......")14 }15 /**16 * 定义没有实现的方法17 */18 def sing()19 }
Bird.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 /** 9 * 在定义类时,我们可以用将多个特质混在一起,第一个特质使用extends连接,后续的特质依次使用with连接即可。10 */11 class ScalaTraitImpl extends ScalaTrait with Bird {12 13 /**14 * 如果特质中playGame方法没有实现的话,子类在实现的时候可以不加override关键字也可以加15 */16 def playGame(name: String): Unit = {17 println(s"${name} 正在玩游戏!")18 }19 20 /**21 * 如果特质中某个方法有具体的实现,在子类继承重写的时候,必须使用override关键字22 */23 override def sayHello(): Unit = {24 //我们的重写过程需要其实就是调用父类的方法25 super.sayHello()26 }27 28 /**29 * 定义有实现的方法30 */31 override def fly(name: String): Unit = super.fly(name)32 33 def sing(): Unit = {34 println("Sing a song!")35 }36 }37 38 39 /**40 * 注意:“object ScalaTraitImpl”是“class ScalaTraitImpl”的伴生对象41 */42 object ScalaTraitImpl{43 def main(args: Array[String]): Unit = {44 /**45 * 在Scala中可以动态混入N个特质,各个特质之间使用关键字with连接即可46 */47 val s1 = new ScalaTraitImpl with Bird with ScalaTrait48 s1.sayHello()49 s1.playGame("尹正杰")50 s1.sing()51 s1.fly("猫头鹰")52 }53 }54 55 56 /*57 以上代码执行结果如下:58 I"m Yinzhengjie!59 尹正杰 正在玩游戏!60 Sing a song!61 猫头鹰 正在天上飞......62 */
六.Scala中得抽象类abstract
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 /** 9 * 1>.使用关键字abstract定义一个抽象类10 * 2>.抽象类可以具体实现方法11 * 3>.也可以有具体实现的方法12 */13 abstract class AbstractClass {14 def eat(food:String):String15 16 def sayHello() = {17 println("I"m yinzhengjie!")18 }19 }
AbstractClass.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 trait Teacher { 9 def palyGame(name:String):String10 11 def teaching(name:String): Unit ={12 println(s"${name} 正在教学生!")13 }14 }
Teacher.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 9 /**10 * 1>.在Scala中第一个继承抽象类或者特质,只能使用关键字extends11 * 2>.如果想继承多个独特的话,可以在extends之后使用with关键字。12 */13 object AbstractClassImpl extends AbstractClass with Teacher {14 override def sayHello(): Unit = {15 super.sayHello()16 }17 18 def eat(food: String): String = {19 "炒着吃" + food20 }21 22 override def palyGame(name: String): String = {23 s"$name 正在打王者荣耀哟......."24 }25 26 def main(args: Array[String]): Unit = {27 AbstractClassImpl.sayHello()28 val res1 = AbstractClassImpl.eat("腊肉")29 println(s"res1 =====> ${res1}")30 }31 }
七.Scala中得final和type
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 trait Teacher { 9 10 /**11 * 使用type关键字定义一个自定义类型Yinzhengjie,这个类型并没有被确定,而是让继承者自己去指定。12 */13 type Yinzhengjie14 15 final def Bodybuilding(s:Yinzhengjie)={16 println(s"${s} 正在健身....")17 }18 19 20 def palyGame(name:String):String21 22 /**23 * 由于teaching方法被我加了关键字final,因此这个方法没法重写(override)!24 */25 final def teaching(name:String): Unit ={26 println(s"${name} 正在教学生!")27 }28 }
Teacher.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 /** 9 * 1>.使用关键字abstract定义一个抽象类10 * 2>.抽象类可以具体实现方法11 * 3>.也可以有具体实现的方法12 */13 abstract class AbstractClass {14 def eat(food:String):String15 16 /**17 * 由于sayHello方法被我加了关键字final,因此这个方法没法重写(override)!18 */19 final def sayHello() = {20 println("I"m yinzhengjie!")21 }22 }
AbstractClass.scala 文件内容
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 9 /**10 * final关键字:11 * 1>.在Scala中,final修饰的类或者方法或者成员变量,不能被重写12 * 2>.如果使用final关键字修饰类,则该类不能被继承13 * 3>.如果使用final关键字修饰方法,则该方法不能被重写(override)14 * 4>.如果使用final关键字修饰成员变量,则该成员变量不能被重新修改(无法再次赋值)15 * type关键字:16 * 我们可以理解type的功能就是一个别名。17 */18 final object AbstractClassImpl extends AbstractClass with Teacher {19 20 /**21 * 我们在继承的时候,需要指定“Yinzhengjie”的类型,比如我们此处指定其类型为String。22 */23 type Yinzhengjie = String24 25 def eat(food: String): String = {26 "炒着吃" + food27 }28 29 override def palyGame(name: String): String = {30 s"$name 正在打王者荣耀哟......."31 }32 33 def main(args: Array[String]): Unit = {34 AbstractClassImpl.sayHello()35 val res1 = AbstractClassImpl.eat("腊肉")36 println(s"res1 =====> ${res1}")37 AbstractClassImpl.Bodybuilding("尹正杰")38 39 }40 }41 42 43 /*44 以上代码执行结果如下:45 I"m yinzhengjie!46 res1 =====> 炒着吃腊肉47 尹正杰 正在健身....48 */
八.Scala中样例类和样例对象
样例类是特殊类,经过了优化处理,经常用于模式匹配。好处是内置实现了众多scala常用的功能,比如serializable、compare、apply、unapply
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.scalaClass 7 8 /** 9 * 样例类:10 * 1>.在类前加关键字case就是一个样例类11 * 2>.它支持模式匹配,默认实现了Serializable接口12 * 3>.具体格式为:case class Message(属性......)13 *14 * 定义变量规则:15 * 1>.类名的定义首字母大写推荐使用驼峰式;16 * 2>.属性名称第一个字母小写;17 * 一个标准的命名规则是一个资深开发的基础。18 */19 case class Message(name:String,countent:String) {20 21 }22 23 24 /**25 * 样例对象:26 * 1>.用于模式匹配27 * 2>.样例对象不能封装数据28 * 3>.样例对象格式:case opject 对象名29 */30 case object MonitorServer31 32 object CaseDemo{33 def main(args: Array[String]): Unit = {34 val message = new Message("杨幂","今天晚上要拍戏......")35 println(message.name)36 println(message.countent)37 }38 }39 40 /*41 以上代码输出结果如下 :42 杨幂43 今天晚上要拍戏......44 */
九.Scala中得模式匹配---match case
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.function 7 8 object People { 9 10 val (name,age) = ("尹正杰",26)11 12 def sayHello(): Unit ={13 println("I"m yinzhengjie!")14 }15 16 def init(): String ={17 s"姓名:$name,年龄:${age}"18 }19 }
People.scala 文件内容(自定义类)
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 package cn.org.yinzhengjie.function 7 8 import java.awt.Color 9 10 11 /** 12 * 模式匹配 match case 13 * 一旦一个case 匹配上了,就不会再往下匹配了 14 */ 15 object PatternMatching { 16 def main(args: Array[String]): Unit={ 17 matchingConstant(Color.orange) 18 contentMatch("yinzhengjie") 19 typeMatch(2018) 20 typeMatch(true) 21 arrayMatch(Array(8)) 22 listMatch(1::2::3::Nil) 23 tupleMatch((0, 1)) 24 objMatch(1,2) 25 objMatch(People) 26 } 27 /** 28 * 匹配对象 29 */ 30 def objMatch(obj: Any) = { 31 val res = obj match { 32 case (x, y) =>s"$x $y" 33 case Int => "int" 34 case People => People.init() 35 case _ => "匹配失败!" 36 } 37 println(res) 38 } 39 /** 40 * 匹配元组 41 */ 42 def tupleMatch(tuple: Any) = { 43 val res = tuple match{ 44 case (0, _) => "元组的第一个元素为0, 第二个元素为任意类型的数据,且只有2个元素" 45 case (a, b, c) => "拥有三个元素的元组" 46 case (_, "98K + 八倍镜") => "[98K + 八倍镜] 套装" 47 case _ => "匹配失败!" 48 } 49 println(res) 50 } 51 /** 52 * 匹配List 53 */ 54 def listMatch(list: Any) = { 55 val res = list match{ 56 case 0::Nil => "只有一个0元素的List" 57 case 7::9::Nil => "只有7和9元素的List" 58 case x::y::z::Nil => "只有三个元素的List" 59 case m::n if n.length > 0 => "------" // 拥有head,和 tail的数组, “if n.length > 0” 是守卫条件 60 case _ => "匹配失败!" 61 } 62 println(res) 63 } 64 /** 65 * 匹配Array 66 */ 67 def arrayMatch(arr: Any) = { 68 val res = arr match { 69 case Array(0) => "只有一个0元素的数组" 70 case Array(0, _) => "以0开头的,拥有2个元素的数组" 71 case Array(1, _, 3) => "已1开头,3结尾,中间为任意元素的三个元素的数组" 72 case Array(8, _*) => "已8开头,N个元素的数组" // _*标识0个或者多个任意类型的数据 73 case _ => "匹配失败!" 74 } 75 println(res) 76 } 77 /** 78 * 匹配数据类型 79 */ 80 def typeMatch(tp: Any) = { 81 val res = tp match{ 82 case x: Int => s"Int $x" 83 case y: Long => s"Long $y" 84 case z: Boolean => s"boolean $z" 85 case _ => "匹配失败!" 86 } 87 println(res) 88 } 89 /** 90 * 匹配字符串内容 91 */ 92 def contentMatch(str: String) = { 93 val res = str match{ 94 case "yinzhengjie" => "尹正杰" 95 case "Python" => "Python" 96 case "Golang" => "Golang" 97 case "Java" => "Java" 98 case "2018" => "2018" 99 case _ => "匹配失败!" // "_"用于任意内容100 }101 println(res)102 }103 /**104 * 匹配常量 + 守卫条件105 * 扩展常量问题:大写会识别成常量,小写是变量,如果让小写也是常量,使用``标出106 */107 def matchingConstant(color: Color)={108 val res = color match {109 case Color.RED => "红色" //case Color.RED 匹配结果为 "红色",下面两行代码类似。110 case Color.GREEN => "绿色"111 case Color.yellow => "黄色"112 case _ if color == Color.orange => "恭喜你,中奖了!" //这里定义的就是守卫条件。113 case _ => "匹配失败!" //case _ 表示匹配任意类型。换句话说,这里定义的是默认匹配情况,即上面的3中匹配均无效。114 }115 println(res)116 }117 }118 119 120 121 /*122 以上代码执行结果如下 :123 恭喜你,中奖了!124 尹正杰125 Int 2018126 boolean true127 已8开头,N个元素的数组128 只有三个元素的List129 元组的第一个元素为0, 第二个元素为任意类型的数据,且只有2个元素130 1 2131 姓名:尹正杰,年龄:26132 */
十.密封样例类
必须将样例子类和父类定义在一个scala文件中。
//必须将样例子类和父类定义在一个scala文件中。sealed abstract class Dogcase class Jing8(var name:String) extends Dogcase class HaShiQi(var name:String) extends Dog
标签:
相关推荐:
精彩放送:
- []全球热点!电脑无法识别的usb设备怎么处理?解决方法步骤
- []世界短讯!领盛投资管理收购上海杨浦黄兴大楼 朗诗青杉资本退出
- []环球热资讯!江西二本院校排名 江西二本院校详情介绍
- []世界今日讯!晁盖你了解多少?晁盖性格特点及主要事迹
- []全球微资讯!上海永乐电器的地址有哪些?永乐电器地址介绍
- []当前快播:海信u958刷机教程与测评 TF方式刷机操作
- []全球热推荐:小学生手工灯笼怎么做简单又漂亮?小学生手工灯笼制作教程
- []电脑上动态壁纸怎么设置?电脑上动态壁纸设置方法
- []全球速读:三星w589怎么样?三星W589评测详解
- []续航1200公里的铝离子电池 明年年底实现量产
- []每日快看:中兴U960怎么样?4.3英寸超大电容屏触摸屏中兴U960评测
- []焦点简讯:2019年度编程语言排行榜:Go、Perl和Groovy上榜
- []今日十个哥哥打一字是什么?谜底揭晓
- []今日快看!instagram电商怎样增粉?电脑登陆有哪些方法?
- []【世界快播报】同样是在春晚舞台上起飞 小沈阳和岳云鹏如今咋相差如此之大?
- []郑码输入法:170个组字能力强的形码输入方法
- []世界简讯:【收藏】全国各地区VPI/VCI值一览表
- []聚焦:野丹参和野生丹参有什么区别?关于野丹参的介绍
- []【环球播资讯】好电影有哪些推荐?《追风筝的人》(The Kite Runner)
- []天天热门:银行点钞机品牌有哪些 ?银行点钞机品牌介绍
- []落寞的意思是什么?落寞一词的含义
- []环球速看:今日北京奥特莱斯全部位置 北京奥特莱斯分布详情
- []环球观速讯丨怎么设置文件夹不被删除?如何设置文件夹加密?
- []天天时讯:什么是C++/CLI?什么是非托管代码?
- []西电随机实验二——模拟调制VSB信号的产生及分析
- []【速看料】淘宝无法使用手机号码登录淘宝账户怎么办?解决措施
- []环球资讯:【案例分享】降维案例探究
- []全球今热点:阿里通信170号怎么充值?170号段充值方法
- []全球热门:网易wow是什么?魔兽争霸官方对战平台怎么设置?
- []每日看点!感恩老师手抄报内容100个 感恩老师手抄报内容
- []【世界独家】注册滴滴司机要有什么条件?驾驶人准入标准
- []全球今头条!凌导移动电源怎么样?凌导移动电源测评
- []天天资讯:尚赫鱼油有什么功效与作用?尚赫鱼油的功效与作用
- []交换机的接口默认的状态是什么?路由器的接口的默认的状态
- []【独家】蚂蚁宝如何申请?蚂蚁宝卡怎么激活?
- []二月初二龙抬头寓意什么?二月初二龙抬头的寓意
- []世界今日报丨冰箱冷藏1234567哪个冷?电冰箱夏季开几档?
- []中石化油中感谢是什么意思?中石化油中感谢官网
- []每日快看:cydia怎么用手机下载?cydia怎么用?
- []mate50性能怎么样?华为mate50开箱测评分享
- []全球热消息:华为Mate30Pro怎么定位跟踪?华为Mate30Pro定位方式
- []【天天时快讯】Request、Form、Query、params的使用方法
- []合锻智能:公司目前尚未投入一体化压铸生产的计划
- []【软件设计】XX模块详细设计说明书
- []项目文档要求不合格 格式不规范?
- []世界热文:酷派5210怎么拆机?酷派5210拆机教程
- []银行点钞机品牌有哪些?银行的这些品牌你了解吗?
- []当前信息:一般试卷的纸张大小是多少?试卷标准字体大小是多少?
- []当前快播:数位板用什么软件好?ps和CorelPainter的使用方法
- []世界讯息:前端ol是啥意思是什么?前端开发基础入门--HTML
- []skullcandy要多少钱?skullcandy价格介绍
- []环球今日讯!手机qq相册怎么恢复?手机qq相册恢复技巧
- []每日速看!windows视频剪辑合成工具——moviemaker
- []环球资讯:怎样在word文档画虚线?Word文档小技巧
- []什么是Gonic?老苏教你如何使用Gonsonic
- []环球百事通!春节狂炫也拉不动猪价,猪粮比已跌至二级预警区间,这家龙头公司预告年营收首度破千亿
- []小米12spro夜景拍照怎么样?小米12spro夜景拍照效果分析
- []全球今热点:科瑞技术:截至2022年12月20日,公司股东户数为25,217户
- []全球微速讯:完美对战平台和金山游侠2002体验版 哪个更好用?
- []石油是什么?油气地质储量及其分级
- []【turtle库】Python画图源码
- []鱼泡科技收到成都交子金融商务局的感谢信
- []北京平安保险公司营业厅地址在哪(北京平安保险门店位置)
- []拔牙怎么走医保报销流程(拔智齿怎么走医保)
- []每日热闻!社保只能查到工伤保险正常吗(社保只能查到工伤保险正常吗)
- []全球微速讯:一张图:黄金原油外汇股指"枢纽点+多空占比"一览(2023/01/31周二)
- []环球快看:快可电子:公司将按照既定的扩产计划进行有续扩产,力争在2023年第四季度接线盒最大产能达30万套/天
- []热消息:消息指福州首套房贷利率下限下调至3.8% 自1月31日起执行
- []【BT金融分析师】LVMH利润暴增211亿欧元,分析师称受到中国消费者青睐
- []全球看热讯:华伍股份:公司2022年度报告正在编制中,长沙天映经营情况请见公司后续披露的2022年度报告
- []天天实时:首套房贷“降息”潮来
- []世界快资讯:北京亦庄国际投资150亿元小公募债券获上交所受理
- []地产寒冬未尽 多家房企发布业绩预亏公告
- []世界快资讯丨海昌奥特曼主题酒店开业,“酒店+乐园”模式是否迎来新模式?
- []天天速递!年休假工龄是按社保记录算吗(年休假工龄是按社保记录算吗)
- []焦点短讯!三大航司:去年预计亏损超1000亿
- []苏州:加快推进房屋征收搬迁货币化安置 优化商品房价格备案制度
- []2022年大湾区9城GDP总额超10.46万亿元 同比增长4.08%
- []视点!春节楼市的新变化
- []重点聚焦!易明医药:根据中登结算下发的股东名册,截至2023年1月20日,我公司股东人数为21,736人
- []环球热文:中海达:预计2022年全年亏损,高精度定位行业前景可期
- []河南发布房企白名单:加大金融支持力度 保障合理融资需求
- []快消息!湖北一季度2506个重大项目宣布开工 总投资1.5万亿元
- []赶紧的反义词是什么?赶紧的反义词读音怎么读?
- []兔宝宝:公司将严格按照相关法律法规要求履行信息披露义务,敬请关注公司公告
- []【环球热闻】望变电气:公司取向硅钢当前是10万吨产能,实际产量以公告为准
- []环球焦点!磷酸盐系正极材料产销大幅提升 德方纳米2022年净利预超23.6亿
- []【世界热闻】郑州龙湖属于什么区?郑州龙湖发展怎么样?
- []世界快看:小动物过冬的方式有哪些?不同的小动物过冬方式分享
- []比克大圆柱生产基地落户江苏常州:投资130亿元 年产30GWh
- []【当前独家】锂盐产品及锂电池产销提升 赣锋锂业2022年预盈超180亿元
- []当前头条:火影中奈良鹿丸的梦想是什么?奈良鹿丸是一个什么样的角色?
- []热资讯!投资10亿元!默迪新能源电池生产线建设项目开工建设
- []焦点速讯:养的一帆风顺叶子黄了是怎么回事?一帆风顺叶子黄了该怎么养护?
- []狐假虎威是什么寓言故事?狐假虎威讲述了什么道理?
- []哪一本小说有叫凌天这个男主角?讲述的是什么故事?
- []速读:过火67辆!官方通报海南三亚停放的电动汽车起火!
- []兰芝雪纱丝柔防晒隔离霜怎么样?兰芝雪纱丝柔防晒隔离霜评价
- []天天热点评!瀚蓝环境董秘回复:公司所处环保产业属于重资产投入行业,相较其他同行业单位,我司资产负债率处于行业中位区间
- []世界热讯:春节期间多地酒店满房,下沉市场住宿需求增加
- 铭利达:从目前下游客户需求及公司在手订单和项目情况来看,公司2023年仍将保持较为良好的增长趋势
- 品牌营销推广的主流趋势是什么?新闻发稿的优势有哪些?
- 环球快消息!Scala进阶之路-面向对象编程之类的成员详解
- 世界微动态丨Hibernate中的对象有哪些状态?Hibernate的对象有三种状态
- 【报资讯】什么是BI?BI、CRM、EXC等数据分析解决方案详解
- 【世界时快讯】摩托罗拉A1200R怎么刷机?摩托罗拉A1200R刷机全攻略
- 【播资讯】react项目中 最新组件不能完成热更新的原因是什么?
- 今日快看!西安市华山中学你知道多少?关于西安华山中学的介绍
- 关于拔罐穴位图去肝火 你知道吗?
- 焦点信息:变形金刚元始天尊变身 C版有哪些?
- 2020中国好声音的冠军是谁?中国好声音节目简介?
- 快资讯:网贷负债40万办抵押房贷款(网贷太多能抵押房子贷款吗)
- 全球热推荐:招商银行信用卡分期不了怎么办(招商银行信用卡不能分期)
- 天天即时:杭州富阳区银湖街道35万方地块控规调整 拟新增多宗涉宅地
- 世界今亮点!深圳福田中洲迎海共推售415套房源 开盘当天销售约160套
- 当前短讯!深圳宝安沙井海岸城旧改规划出炉 拟拆除范围用地面积68.45万平米
- 新华联:预计2022年归属股东净利润亏损23.65亿元-24.15亿元
- 当前观察:物流股震荡拉升 韵达股份涨停 音飞储存、圆通、申通等跟涨
- 明阳智能:公司目前经营情况良好,2022年新增订单以及目前的在手订单充足
- 快可电子:公司在储能领域当前愿景是与国内外领先家庭储能企业深入合作,销售逐步增加
- 科锐国际:截止2023年1月20日公司股东人数为5,625户
- 动态:福晶科技:截至2023年1月20日,公司合并普通账户和融资融券信用账户的股东数为41,517户
- 【全球报资讯】白血病报销后大概要花多少钱(白血病报销后大概要花多少钱)
- 西安旅游强势复苏:地铁客流强度连续6天居全国第一,机票预订量已超疫情前
- 天天播报:振华股份募资6.4亿拟投建新型储能项目
- 春运个别高铁超载无法行驶,旅客被安排下车乘绿皮返岗,打工人:一次难忘的经历
- 当前头条:追加保险万能账户划算吗?(万能账户追加保费划算吗)
- 全球快报:蓝光发展:期末净资产为负值 股票可能被实施退市
- 全球热点评!京城地产一哥和中介巨头,因为这事“打起来”了?
- 天天通讯!国信期货早评:担心欧美央行加息,油价震荡偏弱
- 世界视点!千金药业:公司上下团结一心,扎实做好公司各项业务,努力达成相关业绩目标要求
- 天天通讯!中交地产:预计2022年归属股东净利润3450万元
- 红星美凯龙:预计2022年度归母净利润6.77亿至8.12亿
- 全球热讯:今世缘:公司目前没有类似的计划
- 【独家】A股兔年“开门红” 成交额急剧放大重回万亿
- 全球快资讯丨金科地产:预计2022年度净利润为负值
- 泉峰汽车:公司将于定期报告中披露股东人数
- 天天观天下!又飙了!冯明远、赵诣、姚志鹏精准踩点 多只基金重仓股涨停!新能源主线王者归来?
- 环球报道:高风险基金吸金 低风险基金净赎回近万亿份
- 世界热议:银河证券:从金融周期、经济周期看国内股、债行情
- 环球讯息:节假日热门景点“天价餐、天价酒店”,合理吗?
- 当前焦点!能源局:组织开展储能涉网安全研究,制定储能建设工程监督检查大纲
- 社保局说两个账户不能合并怎么回事(社保局说两个账户不能合并)
- 每日热讯!工商银行信用卡晚还一天会怎么样(工行信用卡晚还一天有影响吗)
- 热门看点:掘金“小高新” 机构“春耕”忙
- 天天快资讯:全球首套功率最大的商业化飞轮储能系统在三水白坭诞生
- 今日观点!双层电极高性能锂离子电池面世
- 中金公司:钢铁基本面改善或超市场预期
- 【全球新视野】医保卡里的钱是先用本年还是历年(医保卡先用当年还是历年)
- 左手全球买矿,右手回收电池!“宁王”238亿布局电池回收缓解“锂焦虑”!
- 派拉蒙计划合并旗下Showtime电视网络和Paramount+
- 当前快看:镇江旅游发展发行3.1亿元超短期融资券 利率5.50%
- 环球看热讯:长坡薄雪 | 美的置业融资内外
- 快看:美年健康“数智赋能”内生式增长 为“阳康”后健康消费需求激增打下坚实基础
- 世界快播:珠江实业发行10亿元超短期融资券 利率3.99%
- 全球滚动:“20金科地产MTN001”2023年第一次持有人会议表决时间延长至2月8日
- 西安港实业9.11亿元竞得西安国际港务区2宗共171亩安置型商品房用地
- 【报资讯】期待更多新能源汽车行驶在东北
- 当前头条:为什么离职后医保卡不能用了(离职后医保卡封存了怎么解封)
- 世界视点!中国人寿入职为什么要交500元(中国人寿入职为什么要交500元)
- 深圳社保全国联网了吗(广东省内异地就医备案)
- 环球看热讯:逾八成QDII年内正收益 基金公司密集布局
- 环球热头条丨春节3.08亿游客去哪了:我在三亚堵车,你在大理看人海
- 当前通讯!人寿99鸿福97版身故怎么赔(99鸿福97版收益表)
- 每日速读!TD早报 | 世卫组织讨论结束新冠全球紧急状态;东航再回应C919计划2月28日商业首飞
- 【全球独家】邮政信用卡分期手续费是一次性扣除吗(邮储信用卡分期手续费一次性扣完)
- 焦点!工龄以档案为准还是社保为准(工龄怎么计算)
- 北京医保卡密码是多少(北京医保卡密码是多少啊)
- 天天热文:中国邮政贷款怎么贷(邮政贷款好贷吗怎么申请网上)
- 天天百事通!在老家住院深圳社保可以报销吗(深圳社保回老家住院能报销多少)
- 焦点消息!hr交社保能看到上一家公司吗(hr交社保能看到上一家公司吗)
- 医保局怎么认定是不是自己摔伤(在家摔伤医保怎么调查)
- 世界观天下!社会保险法补缴的有关规定(社会保险法补缴细则)
- 皇庭国际:与丰翰益港就出售深圳皇庭广场事项进一步共同协商中
- 中南建设预计2022年归母净亏损75亿元-90亿元
- 社保个人交好还是公司代缴好,公司代缴
- 当前资讯!2022延迟退休表格最新山东省,延迟退休一览表
- 实时:平安车险出险流程是什么
- 百事通!华远地产因业绩预告相关事项获上交所监管工作函
- 天天快资讯丨皇庭国际料2022年度归母净利润亏损15亿元至22.5亿元
- 焦点速递!沃森生物:您所提及的公司各车间春节期间按照各车间的年度工作计划开展相关工作
- 速讯:境外意外险怎么办理
- 热资讯!最新延迟退休时间表来了,男女延迟对照表一览
- 世界快看:首开股份因业绩预告相关事项获监管工作函
- 天天简讯:1月30日基金净值:景顺长城景气进取混合A最新净值0.8121,跌0.36%
- 【全球新要闻】三类人可以一次性补缴(三类人可补缴养老保险文件)
- 深圳医保得满6000才可以刷(深圳医保得满6000才可以刷)
- 全球快资讯:新能源汽车全球销冠预告业绩:2022年预盈160-170亿元,扣非净利暴增11倍
- 环球最新:深圳能源:1月20日房向东增持公司股份合计15万股
- 九典制药:1月20日公司高管段立新减持公司股份合计2万股
- 全球快资讯丨信用卡在线申请(信用卡在线申请办理秒过)
- 社保里个人身份(社保系统上个人身份有意义吗)
- 天天热消息:熬过寒冬的旅游企业:率先抢占商机者为胜
- 环球快资讯:华夏幸福扭亏为盈 预计2022年归母净利润为11亿元到16亿元
- 世界滚动:财信地产:预计2022年归母净亏损为1.8亿元到3.6亿元
- 【世界热闻】宋都股份预计2022年归母净利润约为-15亿元到-10亿元
- 世界新消息丨华侨城:预计2022年归母净利润为亏损80亿-110亿元
- 速看:帝欧家居预计2022年归母净利润亏损12亿-16亿元,同比下降1836.21%-2414.95%
- 百洋股份:公司在信息披露方面遵循谨慎公平原则,股东总人数按要求在定期报告中披露,请关注公司公告
- 北京医保个人账号不再转入钱了吗(北京医保个人账户不打钱了么)
- 全球热资讯!蓝光发展控股股东所持4516.77万股拍卖结束 持股降至12.36%
- 今日热搜:正帆科技:1月20日曾庆腾减持公司股份合计1.16万股
- 因债务重组取得重大进展 华夏幸福预计2022年将扭亏为盈11-16亿
- 焦点!泰达股份控股股东为其10亿元债券发行提供连带责任担保
- 【全球速看料】光峰科技预计2022年营收25.5亿元 影院业务复苏向好
- 焦点!苏宁易购2022年核心家电3C预计EBITDA 22.8亿元,同比增162%
- 【快播报】蓝光发展料2022年归母净亏损219.37亿 计提减值160亿
- 世界最新:红星美凯龙为山海艺术等3家子公司提供融资担保 总额40.6亿元
- 环球动态:安恒信息预计2022年营收预增 数据安全等战略新兴业务高速增长
- 快报:医保卡医院都可以用吗(可以用家人的医保卡看病吗)