2020.12.07韩德云

2020.12.07

一,构造函数

1,概念:

一个类内的方法名与类名相同,并且没有返回值类型,也不写void,那么,这个方法就是构造函数. 构造函数也叫做构造方法,或构造器.

例:

class Person{
    //Person类的构造方法
    public Person(){
    
    }
}

2,构造函数的调用规则

(1) 实例化对象时,必须调用类的构造函数,即只要new对象,一定调用构造函数。

(2)在本类的其他构造函数中,使用this 关键字调用.

(3)构造函数不允许使用对象直接调用.

(4)构造函数调用时根据参数匹配原则调用.

(5)如果类中没有定义构造函数,那么JVM会自动为类定义无参数的构造函数.

3,为什么要定义构造函数

构造函数的作用是:在创建对象时,为对象的属性初始化.

例:

public class Order{
    String orderId;
    int number;
    //第一种重载
    public Order() {
        orderId = "2031223123";//初始化
        number= 3;//初始化
    }
    //第二种重载
    public Order(String orderId,int number) {
        this.orderId = orderId;
        this.number= number;
    }
}

4,this 关键字

this是java的关键字,表示当前正在运行的对象。

this指代当前对象的引用。

5,构造函数重载

与方法重载用法相同.

public class Order{
    String orderId;
    int number;
    //第一种重载
    public Order() {
        orderId = "2031223123";//初始化
        number= 3;//初始化
    }
    //第二种重载
    public Order(String orderId,int number) {
        this.orderId = orderId;
        this.number= number;
    }
}

6,构造函数间的调用

1,调用本类的构造函数使用this(),

2,调用父类的构造函数使用super(),

3,this();和super();写在构造函数内的第一行代码,否则不能编译。

例:

public Score(int lishi) {
        this.lishi = lishi;
    }
    public Score() {
        this(5);
    }
    public Score(int a,int b) {
        super();
    }

二,封装

面向对象的三大特征:

​ 继承

​ 封装

​ 多态

1,封装的含义

封装就是保护数据的,数据就是类的成员变量,对于保护数据而言就是对数据的读取和写入

数据用四种保护方式

  1. 不允许读,不允许写。

  2. 允许读,不允许写。

  3. 允许写,不允许读。

  4. 允许读,允许写。

封装也是保护方法的,也就是方法是否允许被调用。

方法被调用的四种情况:

  1. 类内的其他方法是否可以调用

  2. 同包中的其他类是否可以调用

  3. 子类是否可以调用

  4. 任务类是否可以调用

2,如何实现分装

通过访问修饰符来实现封装

四种访问修饰符:

(1)public

public表示共有,公共的,由public访问修饰符修饰的属性或方法或类可以在任何地方被调用。public是最开放的封装。

public可以修饰属性

public可以修饰方法

public可以修饰类

(2)protected

(3)private

private可以修饰属性, 可以修饰方法, 不能修饰类。

例如:private修饰了属性和方法

**public** **class** OldBing {

  **private** String name;

  **private** **void** show() { 

  }

}

(4)默认

默认是指在类、属性、方法定义时不写任何访问修饰符,此时就是默认。

例如

**class** OldBing {

  String name;

  **void** show() {

    **this**.name = "哈哈";

  }

}

默认访问修饰符可以修饰

​ 修饰类

​ 修饰属性

​ 修饰方法

由默认访问修饰符修饰的类,属性,方法可以被同包的其他类访问。

封装最常用的方法:共有方法封装私有属性

需求:在教务系统中,学生对成绩只能查询,不能修改。

分析:成绩在成绩类中使用private封装,此时成绩类外不能访问成绩属性。为成绩属性提供一个共有的方法,这个共有的方法返回成绩的值。此时成绩类外可以通过共有的方法获得私有的成绩。这种封装称为共有方法封装私有属性。

代码:

  **public** **class** Score {

  **private** **int** math; //private封装属性

  **public** **int** getMath() {//public封装方法

​     **return this.math;** //public方法中返回private属性

  }
​      **public** **void** setMath(**int** math) {

​     **this**.math = math;
  }
  **public** Score(**int** math) {

​     **this**.math =math;
  }
}

如果只提供get方法,不提供set方法,表示只读不写。

如果只提供set方法,不同供get方法,表示只写不读

如果提供了get方法和set方法,表示可读写

如果get方法和set方法都不提供,表示不可读写。

 public class Student {
     public static void main(String[] args) {
     Score s =new Score(60);
     int math = s.getMath();//调用public方法,获取private的属性
     System.out\.println(math);
    }
}

评论