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中可 ...
随机推荐
- POJ 1324(BFS + 状态压缩)
题意:给你一条蛇,要求一以最少的步数走到1,1 思路: 最开始一直没想到应该怎样保存状态,后来发现别人用二进制保存蛇的状态,即每两个节点之间的方向和头节点,二进制最多14位(感觉状态保存都能扯到二进制 ...
- hdu 4777 树状数组+合数分解
Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hihocoder 1249(2015ACM/ICPC北京)
题意: 给你一块正方形的土地,里面有矩形的草地,要求把土地分成两份,满足以下两个条件 1.两边的绿洲,左边>=右边,差值尽可能的小 2.在满足1的情况下分给左边的土地尽快能的多 而且绿洲不会出现 ...
- 存储单位的换算(KB, MB, GB)
关于存储单位的换算,大家一般会想到下面的换算方法. 1GB=1024MB 1MB=1024KB 1kb=1024字节 但实际生活中,这种换算方法并不准确. 例如在商家生产销售的硬盘, U盘中就不是这样 ...
- 图像融合之拉普拉斯融合(laplacian blending)
一.拉普拉斯融合基本步骤 1. 两幅图像L,R,以及二值掩模mask,给定金字塔层数level. 2. 分别根据L,R构建其对应的拉普拉斯残差金字塔(层数为level),并保留高斯金字塔下采样最顶端的 ...
- 前端工程师:电信专业转前端是如何拿到阿里、腾讯offer的?
1.个人情况 ● 211本科 985硕士 电信专业 女生 ● 16年3月开始学习前端 ● 16年7月开始实习,共五家实习经历(不是特别厉害的厂) ● 秋招拿到两个offer(阿里.腾讯).没错只有这两 ...
- js登录,回车登录
$(document).ready(function(){ $("#loginBtn").click(doLoginEvent); loadCookies(); //回车登录 do ...
- python2.7入门---内置函数
内置函数 abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() ...
- jquery checkbox是否选中
$("#chkDisplayZxOnly").is(":checked") 选中返回true,否则返回false
- Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构(微服务)
1. packaging packaging给出了项目的打包类型,即作为项目的发布形式,其可能的类型.在Maven 3中,其可用的打包类型如下: jar,默认类型 war ejb ear rar pa ...