9.23知识点

1.Scala对象创建的三种方法

        1)new:使用new关键字创建类的对象

        2)伴生对象:使用object关键字创建一个单例对象

        3)apply:apply是一个方法,需要在伴生对象中实现这个方法

//创建类使用class

class Stu(var name:String, var gender:String,var ID:String){
  def sayHello():Unit ={
    println(s"大家好,我是$name")
  }
}
//创建对象使用new

object Stu {
  //  def apply(name: String, gender: String, ID: String): Stu = {
  //    var p = new Stu(name, gender, ID)
  //    p  //方法中的最后一个语句被自动当作return值
  //  }
  def apply(name: String, gender: String, ID: String): Stu = new Stu(name, gender, ID)
}

object TestClass {
  def main(args: Array[String]): Unit = {
    //不用new 就可以创建一个对象
    var s1 = Stu("小花","女","20145")
    //    println(s1.name)
    //    s1.sayHello()

    //获取当前对象对应的类?  找爸爸
    //    println(s1.getClass())
    println("s".getClass())
    println(100.getClass())

    //验证某个对象是不是某个类的实例? 亲子鉴定
    println(s1.isInstanceOf[Stu])
    println(100.isInstanceOf[Int])
  }
}

2.Scala对象的所属值

        1)getClass:使用反射机制判断Scala对象所属的类

        2)isInstanceof:判断对象是否属于某一个类型,A.isInStanceof[B]表示判断对象A是否属于类型B,实际上是判断A是否是B或者B的子对象

object Test01{
  def main(args: Array[String]): Unit = {
    val p1 = new Person2()
    val p2 = new Person2()
    val s = new Student()
    val t = new Teacher()
    //1.getClass
    println(s"p1==p2 ? ${p1.getClass==p2.getClass}")
    println(s"p1==p1 ? ${p1.getClass==p1.getClass}")
    println(s"p1==s ? ${p1.getClass==s.getClass}")
    println(s"p1==t ? ${p1.getClass==t.getClass}")
    println(s"s==t ? ${p1.getClass==t.getClass}")
    println(s"p1== ${p1.getClass},p2==${p2.getClass}, s=${s.getClass},t=${t.getClass}")
      //isInstanceOF[]
    println(s"p1 isInstanceOF Person2 ? ${p1 isInstanceOf[Person2]}")
    println(s"p1 isInstanceOF Person2 ? ${p1 isInstanceOf[Person2]}")
    println(s"s isInstanceOF Person2 ? ${s isInstanceOf[Person2]}")
    println(s"t isInstanceOF Person2 ? ${s isInstanceOf[Person2]}")
    println(s"s isInstanceOF Student2 ? ${s isInstanceOf[Student2]}")
  }
}
class Person2{
  var name = "person1"
}
class Student2 extends Person2{
}
class Teacher2 extends Person2{
}

3. Scala的对象相等性判断

        1)equal方法:相当于Java中的equals方法

        2)== 与 !=:相当于Java中的equals方法

        3)eq与ne:相当于Java中的引用(使用 == 判断引用)

4.覆写equals方法

        1)Scala的自定义对象相等性

             在重写equals方法时,需要满足以下几个条件:

             a.方法的名字不可以改变

             b.参数列表一定要相同,参数类型是Any类型

             c.重写方法时需要使用override关键字

             根据不同的要求可以实现不同的方法体,重写equals方法的语法格式:

override def equals(other:Any): Boolean = {
  true/false
}

        2)覆写原则

          a.反射性

          b.对称性

          c.过渡性

          d.非空性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值