类与对象

类是一个模板
对象是一个具体的实例

方法

定义,调用

对应的引用

引用类型 vs 基本类型(8个)
对象是通过引用来操作的,栈—>堆

属性

字段Field ,成员变量
默认初始值:

  1. 数字:0,0.0
  2. char:u0000
  3. boolen:false
  4. 引用:null

修饰符 属性类型 属性名=属性值!

对象的创建的使用

  1. 必须使用 new 关键词创造对象,构造器 Person kai=new Person();
  2. 对象的属性 kai.name
  3. 对象的方法 kai.sleep()

  • 静态的属性 属性
  • 动态的行为 方法

封装、继承、多态

封装

  • 该漏的漏,该藏的藏
    • 高内聚,低耦合
    • 类的内部数据操作细节自己完成
    • 尽量暴露少量的方法给外部使用
  • 封装(数据的隐藏)
    • 通常,应禁止直接访问一个对象中数据的实际表示
  • 属性私有,get/set

好处:

  1. 提高程序安全性,保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 系统可维护增加 ```java package com.kai.oop;

//类

//封装

/ 1.提高程序安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4。系统可维护增加 / public class Student { //属性私有 private String name; //名字 private int id; //学号 private char sex; //性别

  1. //提供一些可以操作这些属性的方法
  2. //提供一些public 的get ,set方法
  3. public String getName(){
  4. return this.name;
  5. }
  6. public void setName(String name){
  7. this.name=name;
  8. }
  9. //alt+insert自动生成get,set方法
  10. public int getId() {
  11. return id;
  12. }
  13. public void setId(int id) {
  14. this.id = id;
  15. }

}

```

方法的重载,方法名相同,参数列表输入类型不同


继承

关键词 extends
JAVA类中只有单继承,没有多继承

public
default
protected
private 不可继承

ctrl+H 查看类的树结构
在JAVA中,所以的类都默认直接或间接继承Object类

super详解

super. 调用父类的
this. 调用子类的
调用父类的构造器,要在子类构造器的第一行

  1. super调用父类的构造器,要在子类构造器的第一行
  2. super必须只能出现在类的方法或者构造方法中
  3. super和this不能同时调用构造方法

VS this

  1. 代表的对象不同
    1. this:本身调用者这个对象
    2. super:代表父类对象的应用
  2. 前提
    1. this:没有继承也可以使用
    2. super:只能在继承条件下使用
  3. 构造方法
    1. this() 本类的构造
    2. super() 父类的构造

方法的重写

需要有继承关系,子类重写父类的方法

静态方法的调用只和定义的数据类型有关
非静态的方法:重写,public的才能重写

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大,但是不能缩小
  4. 抛出的异常:范围可以被缩小,但是不能扩大

重写的方法名字相同,方法体不同

为什么需要重写:

  1. 父类的功能不需要或者不满足
  2. alt+insert

不能重写的:

  1. static
  2. final
  3. private

多态

同一方法可以根据发送对象的不用采用多种不同的行为方式 一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类,关联类)

  1. 多态是方法的多态
  2. 父类和子类,有联系
  3. 存在的条件:
    1. 继承关系
    2. 方法需要重写
    3. 父类的引用,指向的子类对象!father f1=new son();

强制类型转换

instanceof

  1. 父类引用指向子类的对象
  2. 把子类转为父类,向上转型
  3. 父类转为子类,需要强制类型转换,可能丢失方法