快学Scala系列(类和对象)

好想玩云顶之奕,但是一想到离线数仓的项目还没有更新就不敢玩了

类和对象

      类是属性和行为的集合,是一个抽象的概念,看不见也摸不着。

  1. 属性:成员变量,事务的外在特征
  2. 行为:成员方法,表示事物能够做什么

对象

创建对象

        class Person(){ } 在scala中如果{}里面只有一行或者没有,可以不写

 

        首先我们创建一个Person对象,这个Person对象里面目前没有什么属性。

        所以打印出来的就是地址。

定义和访问成员变量以及方法

        下面展示一下有成员属性的例子

        在Person中定义name和age两个成员变量

        可能会疑惑,如果在java,我们怎么定义呢?

 string name; int age;

        但是在Scala不能这样,除了上面定义的方式外,还有另一种定义方法

 var name:String = _ var age:Int = _

        用下划线代替值,不过需要我们标注好返回的类型。

        下面来定展示一个成员方法

 

访问权限修饰符

        在成员前面添加private/pritected关键字来控制成员的可见性

tips:

如果成员变量和方法没有被private和protected修饰,那么就是共有的

 

        上面用创建的对象来访问被private权限修饰的变量

        给name赋值,输出的时候报错

        Person类中的name这个成员变量不能被访问

        既然不能访问,也不能赋值,就通过set和get方法来赋值和获取值

类的构造器

        和java一样,Scala中也有自己的构造器

class 类名(var 参数名:类型,var 参数名:类型){ //构造代码块 }

tips:

1. Scala中主构造器的参数列表是直接写在类名后的.

2. 主构造器的参数列表可以有默认值.

3. 调用主构造器创建对象时, 可以指定参数赋值.

4. 整个类中除了定义成员变量和成员方法的代码, 其他都叫: 构造代码.

1.无默认参数
class Person(var name:String,var name:Int){ } 
2.有默认参数
class Person(var name:String = "小明",var age:Int = 27){ }
如果是无默认参数,那么创建对象的时候可以自定义

var p = new Person("大壮",12)

如果是默认的参数,那么可以修改也可以不修改

var p = new Person() 上面这个相当于 var p = new Person("小明",27)

当然也可以修改默认的参数

var p new Person("嘻哈") 上面这个相当于 var p = new Person("嘻哈",27)

 

上面这个就是自定义参数的对象。

单例对象

        Scala中没有static关键字,要想定义类似与Java中的static变量,如果想要使用静态方法或者静态变量那么就要使用单例对象。

如何创建单例对象

        object 单例对象名()

        在单例对象中,可以直接使用单例对象名.形式调用成员

        单例对象和普通的对象不一样,单例对象不可修改,但是普通的对象我们可以new一个修改一个。

 

        如果上面的代码中,我们new Dog()

        是会报错的,就好比java中static修饰的对象,不能new

伴生对象

        一个class和object具有同样的名字,这个object称为伴生对象,class称为伴生类

tips

伴生对象必须要和伴生类一样的名字

- 伴生对象和伴生类在同一个scala源文件中

- 伴生对象和伴生类可以互相访问private属性

        但是如果某个成员的权限设置为private[this],表示只能在当前类中寻找,伴生对象也不可以访问

创建伴生对象和伴生类。

        伴生对象的成员变量用private[this]修饰,可以看到用伴生对象来打印伴生类中的name。

可以看到报错了。

 总结:

        今天稀里糊涂的。本来类和对象的知识点挺多的,被我缩减了一点。

        开了快学Scala之后,我的离线数仓就没了动静了,今天晚上努一努。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值