scala基础补充学习

package com.meng.nan.day716

/**

  • scala内部类(嵌套类)

*/
object ScalaDemo {
def main(args: Array[String]): Unit = {
val outher=new Outher
val inner=new outher.Inner
inner.show()
}
}
//成员内部类
class Outher{ oo=> //外部类的引用
var x=5;
class Inner{
var x=6
def show(){
var x=7
println(“inner:x=”+x)//7
println(“inner:x=”+this.x)//6
println(“inner:x=”+Outher.this.x)//5
println(“inner:x=”+oo.x)//5

}

}}

scala的协变与逆变
. 协变和逆变

在默认情况下,scala也不允许出现上述泛型继承的现象。

但是非常灵活的scala,在特殊情况下是允许这些情况的方式,也就是对应的协变和逆变。在定义泛型的时候,添加一个符号即可[+T]协变,[-T]逆变。

协变指的是等号左侧的泛型是右侧的超类,逆变指的是等号左侧的泛型是右侧的子类。

多用于集合的操作。

举例:

object _03GenericOps {
def main(args: Array[String]): Unit = {
val list:MyList[Object] = new MyListPerson

    val list2:MyList2[Person] = new MyList2[Object]()
    
    val list3:List[Object] = List[Person]()
}

}

class MyList[+T] { //把这种泛型的继承称之为协变
}

class MyList2[-T] {//把这种泛型的继承称之为逆变
}

/**
* implicit转换的关键字
* * 把被implict关键字所修饰的函数,称之为隐式转换函数
* * 函数的命名风格:source2Target

* 类的命名:
*    1、首字母大写,而且多单词要驼峰
*    2、尽量都是名词,而且是单数形式
*    3、不要出现一些中文特殊字符
* 方法或者函数的命名:
*     1、首字母小写,而且多单词要驼峰
*     2、动宾短语(动词+名词)
*     3、不要出现一些中文特殊字符
* 不到万不得已,千万不要使用汉语拼音。
*/

def implicitOps1: Unit ={
implicit def str2Int(str:String):Int=str.length
val str:Int=“asdfgh”
//转换
implicit def person2Int(person: Person):Int=person.getAge
val p:Int=new Person()
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值