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中可 ...
随机推荐
- [BZOJ]1018 堵塞的交通(SHOI2008)
一道有点神的线段树. Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城 ...
- JSSDK实现微信自定义分享---java 后端获取签名信息
一.首先说下关于微信Access_token的问题,微信Access_token分为2中: 1.授权token获取方式: 这种token需要code值(如何获取code值查看官方文档) "h ...
- day05 Servlet 开发和 ServletConfig 与 ServletContext 对象
day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...
- sololearn的c++学习记录_4m11d
Function Templates Functions and classes help to make programs easier to write, safer, and more main ...
- python 单例模式获取IP代理
python 单例模式获取IP代理 tags:python python单例模式 python获取ip代理 引言:最近在学习python,先说一下我学Python得原因,一个是因为它足够好用,完成同样 ...
- Jupyter Notebook 快速入门
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...
- Java IO流笔记
File 类 ps:注意file的delete失败可能是输入输出流还在用这个file Java实现简单文件管理 package fileDemo; import java.io.File; impor ...
- JavaScript原型与原型链
一.数据类型 JavaScript的数据类型可以分为基本数据类型和引用数据类型. 基本数据类型(6种) String Number Boolean null undefined Symbol(ES6) ...
- Node.js Domain 模块
Node.js Domain(域) 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的异常.引入 Domain 模块 语法格式如下: var domain = require(" ...
- MongoDB Java
MongoDB Java 环境配置 在Java程序中如果要使用MongoDB,你需要确保已经安装了Java环境及MongoDB JDBC 驱动. 你可以参考本站的Java教程来安装Java程序.现在让 ...