scala 03

Java SE 三大特性

        封装:属性 方法 封装到一个类中

        继承: 父类和子类之间 属性和方法也是可以重写的

        多态:父类引用指向子类对象

这三种特性,scala也有

类和对象

        女朋友: 名字 年龄 cup 爱好

                        金莲 30    B   喂药

                        铁柱 19 C 玩游戏

女朋友就是一个类,该类中有一些属性、还有一些方法

类是一个抽象的、概念层面的东西

对象就是具体的,其实对象就是一个类的实例化的操作

对象 duixiang = new 类()

类是对象的模板,对象是类的具体实例

一个类你是可以实例化多个

占位符

        

 

在一个scala文件中是可以定义多个Class的

Object Classapp{
    def main(args:Array[String]):Unit = {
    //val | var 对象名:[类型] = new 类()
    val user = new User() //构造器
    user.name_$eq("小明")   //setter
    user.setname("小红")

    }
}
class User{
    //定义属性
  @BeanProperty var name:String = ""//或者_
    val age:Int = 30 
    //定义方法
   def eat():Unit ={
        println(S"$name...eating....")
    }
}

​Object ConstructorAPP{
    def main(args:Array[String]):Unit = {
    //通过构造器去实例化对象
    val person = new Person(name = "ssn",age = 32)
    println(s"name is ${person.name},age is ${person.age},school is ${person.school}")    

    }
}
/**
 *定义构造器
 *定义在类上的构造器叫主构造器
 */
class Person(val name:String,val age:Int){
    println("Person Constructor enter")
    val school = "nudt"
    var gender:String = _
    println("Person Constructor leave")
}

​

运行截图

 1

​Object ConstructorAPP{
    def main(args:Array[String]):Unit = {
    //通过构造器去实例化对象
    val person = new Person(name = "ssn",age = 32,gender = "男")
    println(s"name is ${person.name},age is ${person.age},school is ${person.school},gender is ${person.gender}")    

    }
}
/**
 *定义构造器
 *定义在类上的构造器叫主构造器
 */
class Person(val name:String,val age:Int){
    println("Person Constructor enter")
    val school = "nudt"
    var gender:String = _
/**
 *def this 修饰的叫做附属构造器
 *附属构造器可以有多个 ,是通过入参的个数、类型决定的
 *
 */
 def this(name :String,age:Int,gender:String){
    //第一行必须要调用主构造器或者其他附属构造器
    this(name,age)
    this.gender = gender

}
    println("Person Constructor leave")
}

​

运行如图:

 构造器的作用就是实例化对象

抽象类:

/**
 *抽象类的定义和使用
 *抽象类:类中的一个或者多个方法、属性没有完整的定义
 *抽象类是不能直接被实例化的
 *
 *abstract class 类名 //定义类名
 *val|var name:String//定义属性,只有定义,没有具体的赋值
 *def xxx()         //定义方法,没有
 */
Object AbstractClassApp{
    def main(args:Array[String]):Unit = {
    
    val student = new Student2
    student.speak

    }
}
/**
 *抽象类必须要有具体的实现类才能被实例化
 */
class Student2 extend2 Person2{
    override def speak:Unit ={
    println("speak....")
    }
    override val name:String = "ssn"
    override val age:Int =30
}
abstract class Person2{
    def speak
    val name:String
    val age:Int
}

运行如图:

 

另一种抽象类被实例化的方法

/**
 *抽象类的定义和使用
 *抽象类:类中的一个或者多个方法、属性没有完整的定义
 *抽象类是不能直接被实例化的
 */
Object AbstractClassApp{
    def main(args:Array[String]):Unit = {
        
    val stu = new Person2{
        override def speak:Unit ={
        println("speak....")
        }
        override val name:String = "ssn"
        override val age:Int =30
    }
    stu.speak
  
    }
}
/**
 *抽象类必须要有具体的实现类才能被实例化
 */

abstract class Person2{
    def speak
    val name:String
    val age:Int
}

运行如图:

 type 定义新的数据类型名称

Object TypeApp{

    // type 定义新的数据类型名称
    type S = String
    val value:S = "ssn"
    def test():S = "张三"
}

源码截图

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值