scala---面向对象(1)


//TODO b包对象作用 综合管理当前包下的共享资源
// TODO 包对象  当前包下只能有一个包对象一一对应
package object scala06 {
//  属性
   val packagename:String="scala06"
//  方法
  def sayHi(name:String): Unit ={
    println(s"hi $name")
  }

}
package scala06

object scala01_package {
  def main(args: Array[String]): Unit = {

    println(packagename)
  }

}
package scala06

import scala.beans.BeanProperty

object scala03_class {


  //  内部类
  class persion01 {

  }

  private class persion02 {

  }

}

class persion03 {
  //  封装属性和方法
  //  TODO scala 默认情况下不提供set get 方法 但是 对属性 提供读写权限  底层已经实现
  @BeanProperty
  val name: String = "zhangsan"
  @BeanProperty
  var age: Int = 18

  def sayHi(name: String): Unit = {
    println(s"hi $name")
  }

}
package scala06

object scala04_ConstrctorArgs {
  def main(args: Array[String]): Unit = {
    val zhangsan = new Person1("zhangsan")
  }

}

//属性化参数-------参数直接成为当前类属性 必须使用val var 关键字
class Person1(val name:String){
  println(name)
  val name1=name

}
package scala06

object scala04_Constructor {
  def main(args: Array[String]): Unit = {

    val person0 = new person10("zhangsan")


  }

}

//定义类
class person10(name:String){
//  val name:String=null
//    def person10(): Unit ={
//    }
//  scala提倡完全面向对象
//  scala中针对构造器分为两类  ,主构造器 辅助构造器
//  TODO 主构造器 所在位置就是当前类的签名 主构造器的方法名和类名共用一个
//  ------------针对当前对象进行构造的时候一定访问到主构造器
//  辅助构造器:主要作用就是补充scala中构造方法的重载的特性

//
  println("主构造器 start start。。。。")
//  声明辅助构造器 方法名是固定 所有的辅助构造器都叫this
//  直接调用主构造器
  def this()={
//    辅助构造器原则,方法体的第一行就要调用主构造器
    this("lisi")
    println("辅助构造器 start start....")
  }

//间接调用主构造器

def this(i:Int)={
//  间接调用
  this()
  println("辅助构造器1 start start...")

}



}
package scala06

object scala06_Extends {
  def main(args: Array[String]): Unit = {
//    子类继承父类 可以使用父类属性和方法
val student0 = new Student()
    println(student0.name)

//    当构造子类的时候 关注代码执行顺序
val      = new Student(100)




  }

}
//定义父类
class Person07{
  println("父类构造器 start start....")

  var name:String=_
  def this(name:String)={
    this()
    this.name=name
    println("父类辅助构造器 启动 启动")
  }
}
//使用继承的时候 可以将参数传递给父类构造器
//子类的参数列表中参数一定不能少于父类构造器中的参数数量
class Student extends Person07 {
  println("子类构造器被调用了")
  var age:Int=_

//  子类辅助构造器
  def this(age:Int)={
    this()
    this.age=age
    println("子类辅助构造器被调用")
  }
}

你可能感兴趣的:(scala,开发语言,后端)