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,封装的含义
封装就是保护数据的,数据就是类的成员变量,对于保护数据而言就是对数据的读取和写入
数据用四种保护方式
- 
不允许读,不允许写。
 - 
允许读,不允许写。
 - 
允许写,不允许读。
 - 
允许读,允许写。
 
封装也是保护方法的,也就是方法是否允许被调用。
方法被调用的四种情况:
- 
类内的其他方法是否可以调用
 - 
同包中的其他类是否可以调用
 - 
子类是否可以调用
 - 
任务类是否可以调用
 
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);
    }
}
    


评论留言