scala学习笔记2(类,继承,抽象类)
class Person{
// _ 是占位符;
var name : String = _
val age : Int = 27
// private[this] 定义的内容无法外部使用,起到保护作用;
private[this] val gender = "male"
}
//类的构造函数,主构造器的使用;
//1.主构造器直接跟在类名后面,主构造器中的参数会被编译成类的字段;
//2.主构造器执行的时候会执行类中的所有不包含在方法体中的语句;
//3.如果在主构造器函数中没有用 val 或者 var 去声明变量,那此时的变量是 private[this] 级别的,只能够被类内部访问 ;
class Person1 (val name : String,val age : Int) {
println("this is constructor")
}
//附属构造器:
//1.附属构造器是用 this 来声明的;
//2.附属构造器中必须调用主构造或者其他附属构造器;
class Person2(var name : String , val age : Int) {
println("this is constructor")
var gender : String = _
def this(name : String , age : Int , gender : String) {
this(name,age)
this.gender = gender
}
val University = "BJU"
}
//scala中的继承
class Student (name : String , age : Int , val major : String) extends Person2(name , age){
println("student extends from person,major is : "+ major)
// override 覆写父类的方法
override def toString = "override the method ..."
// override 覆写字段
override val University = "tsinghua"
}
//scala中的抽象类,使用 abstract 关键字
abstract class people{
def speak
val name : String
var age : Int
}
class Worker extends people{
def speak{
println("I'm a worker")
}
val name = "lsw"
var age = 21
}
object OOPinScala{
def main(args : Array[String]){
val person = new Person
person.name = "lucy"
println(person.name + " : " + person.age)
val person1 = new Person1("lucy",22)
println(person1.name + " : " + person1.age)
val person2 = new Person2("lsw",27,"male")
println(person2.name+":"+person2.gender)
val student = new Student("lsw" , 27 ,"computer")
println(student.toString)
println(student.University)
val worker = new Worker()
println(worker.name+" : "+ worker.age)
}
}
运行结果:
scala学习笔记2(类,继承,抽象类)的更多相关文章
- scala 学习笔记十二 继承
1.介绍 继承是面向对象的概念,用于代码的可重用性.可以通过使用extends关键字来实现继承. 为了实现继承,一个类必须扩展到其他类,被扩展类称为超类或父类.扩展的类称为派生类或子类. Scala支 ...
- scala学习手记13 - 类继承
在scala里,类继承有两点限制: 重写方法需要使用override关键字: 只有主构造函数才能往父类构造函数中传参数. 在java1.5中引入了override注解,但不强制使用.不过在scala中 ...
- [Scala]Scala学习笔记四 类
1. 简单类与无参方法 class Person { var age = 0 // 必须初始化字段 def getAge() = age // 方法默认为公有的 } 备注 在Scala中,类并不声明为 ...
- Python 学习笔记15 类 - 继承
我们在编程的过程中,并非都是要重头开始.比如其他人已经有现成的类,我们可以使用其他找人编写的类.术语称之为: 继承. 当一个类继承例外一个类时,它可以获得这个类的所有属性和方法:原有的类称之为 父类, ...
- Scala学习笔记——样本类和模式匹配
1.样本类 在申明的类前面加上一个case修饰符,带有这种修饰符的类被称为样本类(case class). 被申明为样本类的类的特点:1.会添加和类名一致的工厂方法:2.样本类参数列表中的所有参数隐式 ...
- Scala学习笔记(5)类
1.简单类和无参方法 calss Counter{ private var value = 0 //必须初始字段 def increment(){value +=1} //方法默认是公有的 def ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- JavaSE学习笔记(4)---抽象类和接口
JavaSE学习笔记(4)---抽象类和接口 抽象方法和抽象类 ·抽象方法 使用abstract修饰的方法,没有方法体,只有声明.定义的是一种"规范",就是告诉子类必须要给抽象方法 ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- scala学习笔记-面向对象编程之Trait
将trait作为接口使用 1 // Scala中的Triat是一种特殊的概念 2 // 首先我们可以将Trait作为接口来使用,此时的Triat就与Java中的接口非常类似 3 // 在triat中可 ...
随机推荐
- ubuntu16.04安装eclipse后启动栏图标为问号
ubuntu创建eclipse快捷方式图标. cd /usr/share/applications sudo touch eclipse.desktop sudo gedit eclipse.desk ...
- 数据结构 单链表&顺序表
顺序表: 一般使用数组(C语言中的数组采用顺序存储方式.即连续地址存储)来描述. 优点:在于随机访问元素, 缺点:插入和和删除的时候,需要移动大量的元素. 链表: 优点:插入或删除元素时很方便,使用灵 ...
- 120. Triangle(中等)
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- eclipse安装和配置Gradle插件
配置: 首先下载Gradle:https://gradle.org/gradle-download/ 设置Gradle环境变量: GRADLE_HOME %GRADLE_HOME%\bin" ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- 服务器&阵列卡&组raid 5
清除raid信息后,机器将会读不到系统, 后面若进一步操作处理, raid信息有可能会被初始化掉,那么硬盘数据就有可能会被清空, 导致数据丢失, 否则如果只是清除raid信息,重做raid是可以还原系 ...
- C++笔记010:C++对C的扩展——register关键字增强
register关键字:请求编译器让变量直接放到CPU内部寄存器里面,而不是通过内存寻址访问,速度快. 在C语言中,register修饰的变量不能取地址,去寄存器变量的地址在C语言里面是会出错的. i ...
- ACM Bee
In Africa there is a very special species of bee. Every year, the female bees of such species give b ...
- Python3 JSON 数据解析
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进 ...
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...