Scala 学习入门到掌握-传方法参数[10]

案例一成员变量

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

    //创建一只猫
    val cat = new Cat
    //给猫的属性赋值

    //说明
    //1. cat.name = "小白" 其实不是直接访问属性,而是  cat.name_$eq("小白")
    //2. cat.name 等价于 cat.name()
    cat.name = "小白" //等价
    cat.age = 10
    cat.color = "白色"
    println("ok~")
    printf("\n小猫的信息如下: %s %d %s", cat.name, cat.age, cat.color)
  }
}

//定义一个类Cat
//一个class Cat 对应的字节码文件只有一个 Cat.class ,默认是public
class Cat {
  //定义/声明三个属性
  //说明
  //1. 当我们声明了 var name :String时, 在底层对应 private name
  //2. 同时会生成 两个public方法 name() <=类似=> getter  public name_$eq() => setter
  var name: String = "" //给初始值
  var age: Int = _ // _ 表示给age 一个默认的值 ,如果Int 默认就是0
  var color: String = _ // _ 给 color 默认值,如果String ,默认是就是""
}

/*
public class Cat
{
  private String name = "";
  private int age;
  private String color;

  public String name()
  {
    return this.name; }
  public void name_$eq(String x$1) { this.name = x$1; }
  public int age() { return this.age; }
  public void age_$eq(int x$1) { this.age = x$1; }
  public String color() { return this.color; }
  public void color_$eq(String x$1) { this.color = x$1; }

}
 */

class Dog{
  var name = "jack"
  var lover = new Fish
}

class Fish{

}

案例二:子类转父类

object CreateObj {
  def main(args: Array[String]): Unit = {
    val emp = new Emp // emp 类型就是Emp
    //如果我们希望将子类对象,交给父类的引用,这时就需要写上类型
    val emp2: Person = new Emp

  }
}

class Person {

}

class Emp extends Person {

}

案例三:引用地址

object MemState {
  def main(args: Array[String]): Unit = {
    val p1 = new Person2
    p1.name = "jack"
    p1.age = 10

    val p2 = p1
    println(p1 == p2) // true
    p1.name = "tom"
    println("p2.name=" + p2.name)
  }

}

class Person2 {
  var name = ""
  var age: Int  = _ //如果是用 _ 方式给默认值,则属性必须指定类型
}

案例五:成员变量

object PropertyDemo {
  def main(args: Array[String]): Unit = {
//    val p1 = new Person
//    println(p1.Name) //Null
//    println(p1.address) //String类型
    val  a = new A
    println(a.var1) // null 还是 ""
    println(a.var2) // 0
    println(a.var4) //false


    //创建两个对象
    var worker1 = new Worker
    worker1.name = "jack"
    var worker2 = new Worker
    worker2.name = "tom"

  }
}

class Person3 {
  var age: Int = 10 //给属性赋初值,省略类型,会自动推导
  var sal = 8090.9
  var Name = null // Name 是什么类型
  var address: String = null //ok
}

class A {
  var var1 :String = _  // null
  var var2 :Byte = _  // 0
  var var3 :Double = _  //0.0
  var var4 :Boolean = _  //false
}

class Worker {
  var name = ""
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值