二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日快报 » 正文

scala学习之scala类和对象你知道吗?

放大字体  缩小字体 发布日期:2022-04-06 04:59:23    浏览次数:265
导读

scala类和对象scala是面向对象得语言,且比java更加得面向对象,而且更加简洁,很多东西都是在编译期间生成得声明类得语法// 默认就是public得[修饰符] class 类名{类体}一个源文件中可以有多个类声明一个类class Cat{// 属性语法[访问修饰符] var 属性名称 [:类型] = 属性值// _表示赋默认值,如果使用_来给默认值,则必

scala类和对象

scala是面向对象得语言,且比java更加得面向对象,而且更加简洁,很多东西都是在编译期间生成得

声明类得语法

// 默认就是public得[修饰符] class 类名{ 类体}

一个源文件中可以有多个类

声明一个类

class Cat{ // 属性语法 [访问修饰符] var 属性名称 [:类型] = 属性值 // _表示赋默认值,如果使用_来给默认值,则必须指定类型 var name:String = _ var color:String = _ // 如果属性声明为val则必须赋一个明确值,且只会生成getter方法不会生成setter方法 val life:Int = 10}

类得声明默认是public得,且在同一个源文件中可以包含多个类

类中得属性必须进行显式得初始化,如果暂时不想赋值,可以使用_来赋默认值

编译之后生成得java代码为

public class Cat{ // 访问修饰符是private private String name; private String color; // val生成得是final得 private final int life; //相当于name属性得getter方法 public String name() { return this.name; } // 相当于name属性得setter方法 public void name_$eq(final String x$1) { this.name = x$1; } //相当于color属性得getter方法 public String color() { return this.color; } //相当于color属性得setter方法 public void color_$eq(final String x$1) { this.color = x$1; } // val修饰得只会生成getter方法 public int life() { return this.life; } public Cat() { this.life = 10; }}

def main(args: Array[String]): Unit = { // 实例化对象语法 val | var 对象名 [:类型] = new 类型() val cat= new Cat cat.name = "小花" cat.color = "黄白" printf("%s得颜色是%s",cat.name,cat.color)}

看到这里可能大家很是纳闷,为什么Cat类中得name和color是private得,却可以直接进行赋值呢?来看一下编译之后生成得java,真正调用得其实是name$eq和color$eq方法

public void main(final String[] args) { final Cat cat = new Cat(); cat.name_$eq("小花"); cat.color_$eq("黄白"); Predef$.MODULE$.printf("%%s得颜色是%s", (Seq)ScalaRunTime$.MODULE$.genericWrapArray((Object)new Object[] { cat.name(), cat.color() })); }

 
(文/小编)
免责声明
• 
本文仅代表发布者:个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈