scala :::_Scala:OOP基础

scala :::

在编码的大部分时间里,我使用Java。 所以这是我的主要编程语言。 它在所有方面都使我满意,但是我注意到Java有时太冗长。 这就是为什么我改用Scala的原因。 因此,我现在所有的空闲时间都花在学习Scala上。 我将在博客中发布一些注释,因此欢迎您访问博客的新页面,该页面将专门介绍Scala。 第一篇严肃的文章将关于Scala OOP。 scala徽标

类声明

Scala中的OOP允许创建类。 但是声明的过程与Java相比有所不同。 这是我们如何在Scala中做到这一点:

class Person

没什么难的。 这并不奇怪,我们只声明了绝对无用的类。 让我们进一步看一下如何升级代码以使其更实用。

主要构造函数

我将在Person类中添加一些在对象创建期间需要指定的参数。 你们中许多人可能猜到了,我在说的是主要构造函数

class Person(name: String, age: Int)

创建对象时,可以直接调用Primary构造函数。 这是一个例子:

val p1 = new Person("Alex", 24)

也可以在重载的构造函数中间接调用它。 重载不在主题范围内,我将在以下文章中讨论。

前缀构造函数参数

好的,我们已经声明了Person类,并且由于它在主构造函数中传递了一些初始化参数,因此它似乎或多或少有用。 但是,初始化后如何与这些参数进行交互?

scala> p1.name
<console>:10: error: value name is not a member of Person
              p1.name

如您所见,尝试访问Person实例类的name参数会导致错误。 这是因为name参数在主构造函数声明中没有任何前缀。 因此, 名称年龄参数被声明为私有,并且在Person类之外无法访问。

class Person(val name: String, var age: Int)

我修改了Person类声明。 现在, name参数将使用getter来提供,因为它以val为前缀,并且age参数除了setter之外还将通过setter来提供,因为它以var为前缀。

scala> val p2 = new Person("Bobby", 25)
p2: Person = Person@30374534

scala> p2.name
res1: String = Bobby

scala> p2.name = "Bob"
<console>:9: error: reassignment to val
       p2.name = "Bob"

scala> p2.age
res2: Int = 25

scala> p2.age = 26
p2.age: Int = 26

借助主构造函数中valvar前缀,您可以使类更实用。

类体

让我们进一步了解Scala中的OOP基础知识。 现在,我想展示Scala类在类体内包含一些其他功能时如何变得更加实用。

class Person(val name:String, var age:Int) {
def introduce() = 
println(s"Hi, my name is ${name}, I'm ${age} years old")
}

现在, Person类的一个实例更具社交性,他(她)可能会向某人介绍自己。 尝试代码:

val p3 = new Person("Jhon", 33)
p3.introduce

摘要

在这篇文章中,我尝试概述了Scala OOP的最简单和最基本的基础。 在我看来,Scala OOP比Java OOP更复杂。 甚至可能还不算复杂,但是它有所不同,并且肯定需要一些时间来适应它。

参考: Scala: Fruzenshtein的注释博客中来自JCG合作伙伴 Alexey Zvolinskiy的OOP基础知识

翻译自: https://www.javacodegeeks.com/2014/03/scala-oop-basics.html

scala :::

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值