Scala面向对象—类详解
package com.zzy
import scala.beans.BeanProperty
class Aclass {
@BeanProperty//生成get和set方法对于其他框架里对标准的scalaBean的使用有重要作用
var name="" private var age=0//屏蔽一些不合法的操作,提高程序的健壮性
def getAge()=age
def setAge(age:Int):Unit={
if (age>=0){
this.age=age
}else{
this.age=18
}
} def show():Unit={
println("我是show方法")
}
def show2: Unit ={//方法无副作用可以不加括号
println("我是show2方法") } //定制getter和setter-----按照java的方式写
/*def getName():String=name
def setName(name:String){this.name=name}*/ }
package com.zzy
import org.junit.Test
class Person (ad:String){//主构造器!!!
var address=ad
var name="小白"
var age=18
//主构造器
//无参构造器
/*def Person(ad:String):Unit={
println("主构造器被调用了")
}*/
//scala中只能有一个主构造器
//辅助构造器
def this(n:String,a:Int){
this("河南")//调用主构造器
this.name=n
this.age=a
println("辅助构造器被调用了")
}
}
开发中正常一个类的结构
package com.zzy
import scala.beans.BeanProperty
class Address {
//给出getter setter
@BeanProperty
var city="郑州"
@BeanProperty
var street="十五大街"
@BeanProperty
var mail="450000"
//主构造器就是无参的构造方法
//辅助构造器
def this(c:String,s:String,m:String) {
this()
this.city = c
this.street = s
}
//toString 重写了tostring
override def toString = s"Address($city, $street, $mail)"
}
package com.zzy
import org.junit.Test object MyTest {
def main(args: Array[String]): Unit = { val aa = new Aclass
aa.show()
aa.name="赵云"//调用了setter
println(aa.name)//调用了getter aa.show2 //属性上加上@BeanProperty 对象就直接可以调用属性的get和set方法
println(aa.getName)
aa.setName("关羽")
println(aa.getName) aa.setAge(-100)
println(aa.getAge())//18 //创建对象
/*val person = new Person("郑州")//调用了有参数的主构造器
println(person.address+"\t"+person.name+"\t"+person.age)*/ /* val person2= new Person("曹操",50)
println(person2.address+"\t"+person2.name+"\t"+person2.age)*/
//有两个构造器(主,辅)就有两种方式创建对象 /* val address = new Address
println(address)*/ /* val address2 = new Address("洛阳","凤凰街道","460000")
println(address2)*/ } //无法在object中使用junit
@Test
def myfunction():Unit={
println("测试")
} }
Scala中junit的使用
package com.zzy
import org.junit.Test
class myJunitTest {//scala可以在class中使用junit object中不可以 @Test
def show:Unit={
println("测试junit")
} }
Scala面向对象—类详解的更多相关文章
- Scala面向对象—类详解2(继承相关)
1.单例类 package com.zzzy class AAA {//单例 /*//java 思路--私有化构造方法,提供公开的getAAA 行不通 private def this(){ this ...
- URLConnection类详解-转
转-http://www.cnblogs.com/shijiaqi1066/p/3753224.html 1. URLConnection概述 URLConnection是一个抽象类,表示指向URL指 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Java基础-进程与线程之Thread类详解
Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...
- windows scala helloworld例子详解
[学习笔记] windows scala helloworld例子详解: 在操作系统中,我们的Test3.scala会生成Test3.class,然后class文件被虚拟机加载并执行, 这一点和jav ...
- java之StringBuffer类详解
StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...
- java之AbstractStringBuilder类详解
目录 AbstractStringBuilder类 字段 构造器 方法 public abstract String toString() 扩充容量 void expandCapacity(in ...
- java之StringBuilder类详解
StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
随机推荐
- 你真会看idea中的Log吗?
在项目中提交代码时,我们时常忘了自己是否已经update代码或者push代码了,或者以为自己push,但是别人说你的代码没push,其实可以通过idea的Log日志中查看,你会发现里面有三种颜色的标签 ...
- C语言实现九大排序算法
C语言实现九大排序算法 直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 基数排序 C语言实现九大排序算法 直接插入排序 将数组分为两个部分,一个是有序部分,一 ...
- 【JDBC核心】JDBC 概述
JDBC 概述 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固 ...
- 【MyBatis】自定义 MyBatis
自定义 MyBatis 文章源码 执行查询信息的分析 我们知道,MyBatis 在使用代理 DAO 的方式实现增删改查时只做两件事: 创建代理对象 在代理对象中调用 selectList() 配置信息 ...
- Nginx Consul nginx-upsync-module
nginx consul nginx-upsync-module 依赖包: yum -y install libpcre3 libpcre3-dev ruby zlib1g-dev patch 下载n ...
- Gulp4.0入门和实战
gulp4.0入门和实战 我最近遇到需要优化web的性能的任务,然后就捣鼓了一些对资源文件优化压缩的方案.由于之前的项目中有使用到gulp,所以在需要处理的web项目中也优先使用这个技术. 先聊聊gu ...
- MySQL下载与安装教程
一,下载篇 1,首先访问MySQL官网下载页,https://dev.mysql.com/downloads/mysql/ 如果是MAC系统,操作系统请选择macOS,Windows则选择Window ...
- 探索微软开源Python自动化神器Playwright
相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...
- 欢迎来到 ZooKeeper 动物世界
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费有趣.入门级的 ZooKeeper 开源教程,面向有编程基础的新手. Zo ...
- jQ实现图片无缝轮播
在铺页面的过程中,总是会遇到轮播图需要处理,一般我是会用swiper来制作,但总会有哪个几个个例需要我自己来写功能,这里制作了一个jq用来实现图片无缝轮播的dome,分享给大家ヽ( ̄▽ ̄)ノ. dom ...