面向对象编程

发布于:2025-04-04 ⋅ 阅读:(31) ⋅ 点赞:(0)

1、包的命名

命名规则

只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。

案例实操

demo.class.exec1	//错误,因为 class 关键字
demo.12a	//错误,数字开头

命名规范

一般是小写字母+小圆点

案例实操

com.zpark.oa.model 
com.zpark.oa.controller
com.sohu.bank.order
2、属性
var name: String = "bobo"
var age: Int = _
@BeanProperty var sex: String = "男"

说明

var 修饰的属性是可变的,val 修饰的属性是不可变的。

使用 @BeanProperty 注解可以自动生成规范的 setXxx/getXxx 方法。

3、访问权限

说明

Scala 中的访问权限修饰符包括 privateprotected 和包访问权限。

private 修饰的属性或方法只能在类内部和伴生对象中访问。

protected 修饰的属性或方法可以在子类中访问,但不能在同包的其他类中访问。

包访问权限可以通过 private[包名] 来实现。

案例实操

private var name: String = "bobo"
protected var age: Int = 18
private[test] var sex: String = "男"
4、方法

基本语法

def sum(n1: Int, n2: Int): Int = {
    n1 + n2
}

说明

方法是类中执行特定任务的代码块。

Scala 中的方法可以有返回值类型,也可以省略(编译器会自动推导)。

5、创建对象

说明

  1. val 修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值。
  2. var 修饰对象,可以修改对象的引用和修改对象的属性值
  3. 自动推导变量类型不能多态,所以多态需要显示声明
class Person {
   var name: String = "canglaoshi"
}

object Person {

   def main(args: Array[String]): Unit = {
       //val 修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值。
       val person = new Person() person.name = "bobo"

       // person = new Person()// 错误的
       println(person.name)
   }
}

6、构造器参数

说明

  1. 未用任何修饰符修饰,这个参数就是一个局部变量
  2. var 修饰参数,作为类的成员属性使用,可以修改
  3. val 修饰参数,作为类只读属性使用,不能修改
  4. class Person(name: String, var age: Int, val sex: String) {
    
    }
    
    object Test {
    
       def main(args: Array[String]): Unit = {
    
          var person = new Person("bobo", 18, "男")
          // (1)未用任何修饰符修饰,这个参数就是一个局部变量
          // printf(person.name)
    
          // (2)var 修饰参数,作为类的成员属性使用,可以修改
          person.age = 19 println(person.age)
          println(person.age)
          // (3)val 修饰参数,作为类的只读属性使用,不能修改
          // person.sex = "女" println(person.sex)
       }
    }
    

 7、继承和多态

说明

class  子类名 extends 类名    { 类 体 }

  1. 子类继承父类的属性方法
  2. 继承的调用顺序:父类构造器->子类构造器

案例实操

class Person {
   val name: String = "person"

   def hello(): Unit = 
       { println("hello 
       person")
   }
}

class Teacher extends Person {
   override val name: String = "teacher" 

   override def hello(): Unit = {
      println("hello teacher")
   }
}

object Test {
   def main(args: Array[String]): Unit = 
       { val teacher: 
       Teacher = new Teacher() println(teacher.name) 
       teacher.hello()

       val teacher1:Person = new Teacher 
       println(teacher1.name) 
       teacher1.hello()
   }
}


网站公告

今日签到

点亮在社区的每一天
去签到