网站首页 > java教程 正文
scala是面向对象和函数式编程的集合体,应该说是比java要更基于对象的语言,官网说scala是纯面向对象的语言,因为它的每一个值都是对象,而每一个操作符都是方法。今天的学习内容就是scala的类和对象。
11、类和对象
类(Class)包括成员变量和方法,在scala中所有的成员变量需要初始化,否则将认为这个类是抽象类,对于所有的成员变量都有默认设置了getter和setter方法,公有的成员变量的getter和setter方法是共有的,私有的成员变量的getter和setter方法是私有的。 例如对于name生成的getter名为name,setter名为name_。如果成员变量是val声明的那么成员变量将只有getter方法而没有setter方法,这很好理解。在scala中默认的访问权限是public,这里有别去java的包访问权限。另外在scala中不推荐使用return,推荐使用最后一个表达式的值来作为方法的返回值,另外从上图可以看到,语句的结尾是否有分号是不影响的。对python的使用者来说,这真是个福音。
说到类就必须得说到构造器,在scala中可以有一个主构造器和多个辅助构造器。
主构造器在类名后加入参数,注意scala中的参数都为val,如果没有显示的构造函数,则和java一样将会生成一个空的构造器。所有的辅助构造器都是以this为名字,并且它们必须调用主构造器或者辅助构造器。同时注意到辅助构造器的参数是不能加val声明的,不然编译不通过。如果要想像java在class中直接运行main函数则在class中是不行的,必须在object中。
对象(object)可以单独存在,也可以和类一起存在,如果一起存在那么对象叫做伴生对象,类叫做伴生类。两者的名字相同,而且必须在同一个源文件中。这样伴生类可以访问伴生对象的私有变量。在scala中类是不能生成static类型的变量和方法的,要实现这些功能则只能在object中实现。
伴生对象和类的差别是它不带参数,因为伴生对象不是用new来实例化的,没有机会传递参数,对象都是在第一次访问的时候才会被初始化。对象常常被单独使用,这时候称它们为独立对象,它们有时被用在一些方法的工具类,有时被用在应用的入口。
今天的大事件:阿法狗战胜了李世石,在这里恭喜阿法狗获得胜利!
猜你喜欢
- 2025-10-02 Delphi变量的作用域详解_delphi函数调用
- 2025-10-02 熬夜7天,我总结了JavaScript与ES的25个知识点
- 2025-10-02 VB编程(八)常量和变量_vb中常量
- 2025-10-02 JS前端闭包是什么?私有变量可以用到闭包
- 2025-10-02 JavaScript初学者指南_javascript学习指南
- 2025-10-02 大语言模型学习Python 中的描述符(Descriptor)
- 2025-10-02 你的 SpringBoot 项目藏着多少内存 “黑洞”?3 招根治泄漏难题
- 2025-10-02 linux中内部变量,环境变量,用户变量的区别
- 2025-10-02 Python中的property属性_python的prod
- 2025-10-02 零基础零成本,手把手部署一个属于你的私有大模型。
你 发表评论:
欢迎- 最近发表
-
- JUC系列之《CompletableFuture:Java异步编程的终极武器》
- SpringBoot+Jasync异步化改造狂降90%耗时,百万并发下的性能杀戮
- Java异步编程神器:CompletableFuture实战技巧
- Spring Boot 异步请求 + 虚拟线程性能提升?结果很意外
- 异步可以单线程,但高并发的异步肯定要用线程池
- Java线程实现原理及相关机制_java线程的实现
- java线程终止 interrupt 关键字详解
- Java处理百万级消息积压方案_java 实时处理亿级数据
- 阻塞模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?
- 安卓7系统设置永不休眠_android 设置永不休眠
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)