zoukankan      html  css  js  c++  java
  • 常用类的介绍

    抽象类

    1. 抽象方法:指一些只有方法声明,而没有具体方法体的方法。
    2. 抽象字段:定义了field,但是没有给出初始值,则此field为抽象field
    3. 抽象类:如果一个类中有抽象字段或者抽象方法的类一定是抽象类,抽象类中不一定有抽象方法或者抽象字段,只需要用abstract 修饰
    4. 抽象类:不可以实例化的,子类继承抽象类必须实现抽象类中的成员
    5. 子类在实现父类的抽象字段或者抽象方法的时候,不使用override
    6. 子类在覆盖(重写)父类的字段或者方法的时候,一定使用override
    7. 重写字段的实质是在重写字段的setter、getter方法
    abstract class Person(val name: String) {
      def sayHello
      val age: String
    }
    class Student(name: String) extends Person(name) {
      def sayHello: Unit = println("Hello, " + name)
      val age: String = "leo"
    }

    匿名子类

    1. 在Scala中,匿名子类是非常常见,而且非常强大的。Spark的源码中也大量使用了这种匿名子类
    2. 匿名子类:定义一个类的没有名称的子类,并直接创建其对象。(通过new 父类名 进行创建,可以同时重写父类中的成员)
    3. 可以将对象的引用赋予一个变量
    object test {
          def main(args: Array[String]): Unit = {
            class Person(protected val name: String) {
              def sayHello = "Hello, I am " + name
            }
            val p = new Person("leo") {  //匿名子类(创建匿名子类的同时直接创建匿名子类的对象p)
            override def sayHello = "Hi, I'm " + name  //重写父类中的方法
            }
            def greeting(s:Person) { //将该匿名子类的对象传递给其他函数
              println(s.sayHello)
            }
            greeting(p)
          }
        }

     内部类

    1. 内部类是隶属于对象而不是隶属于类本身
    2. 创建内部类的实例:需要先创建外部类的实例,在创建内部类的实例。如:
      1. val outer1= new OutClass
      2. val inner1= new outer1.InnerClass
    3. 直接调用内外部类的属性的方式
      1. 使用this的方式调用:OutClass.this.name ()表示外部类   this.name和name表示内部类
      2. 使用别名的方式调用:outer.name表示外部类  (outer表示外部类对象的别名)
    class OutClass(val name:String) { outer=>
      class InnerClass(val name:String){
       def info1=println("外部类:"+OutClass.this.name+"内部类:"+this.name) //第一种方法this的形式调用
        def info2=println("外部类:"+outer.name+"内部类:"+name)    //第二种方法调用,别名调用外部类
      }
    }
    object printOut{
      def main(args: Array[String]): Unit = {
        val outer= new OutClass("out")
        val inner= new outer.InnerClass("inner")
        inner.info1
        inner.info2
      }
    }
  • 相关阅读:
    Spring Boot (20) 拦截器
    Spring Boot (19) servlet、filter、listener
    Spring Boot (18) @Async异步
    Spring Boot (17) 发送邮件
    Spring Boot (16) logback和access日志
    Spring Boot (15) pom.xml设置
    Spring Boot (14) 数据源配置原理
    Spring Boot (13) druid监控
    Spring boot (12) tomcat jdbc连接池
    Spring Boot (11) mybatis 关联映射
  • 原文地址:https://www.cnblogs.com/WeiKing/p/11662314.html
Copyright © 2011-2022 走看看