类与对象
类是一个模板
对象是一个具体的实例
方法
定义,调用
对应的引用
引用类型 vs 基本类型(8个)
对象是通过引用来操作的,栈—>堆
属性
字段Field ,成员变量
默认初始值:
- 数字:0,0.0
- char:u0000
- boolen:false
- 引用:null
修饰符 属性类型 属性名=属性值!
对象的创建的使用
- 必须使用
new
关键词创造对象,构造器Person kai=new Person();
- 对象的属性
kai.name
- 对象的方法
kai.sleep()
类
- 静态的属性 属性
- 动态的行为 方法
封装、继承、多态
封装
- 该漏的漏,该藏的藏
- 高内聚,低耦合
- 类的内部数据操作细节自己完成
- 尽量暴露少量的方法给外部使用
- 封装(数据的隐藏)
- 通常,应禁止直接访问一个对象中数据的实际表示
- 属性私有,get/set
好处:
- 提高程序安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护增加 ```java package com.kai.oop;
//类
//封装
/ 1.提高程序安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4。系统可维护增加 / public class Student { //属性私有 private String name; //名字 private int id; //学号 private char sex; //性别
//提供一些可以操作这些属性的方法
//提供一些public 的get ,set方法
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
//alt+insert自动生成get,set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
```
方法的重载,方法名相同,参数列表输入类型不同
继承
关键词 extends
JAVA类中只有单继承,没有多继承
public
default
protected
private
不可继承
ctrl+H
查看类的树结构
在JAVA中,所以的类都默认直接或间接继承Object类
super详解
super.
调用父类的this.
调用子类的
调用父类的构造器,要在子类构造器的第一行
- super调用父类的构造器,要在子类构造器的第一行
- super必须只能出现在类的方法或者构造方法中
- super和this不能同时调用构造方法
VS this
- 代表的对象不同
- this:本身调用者这个对象
- super:代表父类对象的应用
- 前提
- this:没有继承也可以使用
- super:只能在继承条件下使用
- 构造方法
- this() 本类的构造
- super() 父类的构造
方法的重写
需要有继承关系,子类重写父类的方法
静态方法的调用只和定义的数据类型有关
非静态的方法:重写,public的才能重写
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但是不能缩小
- 抛出的异常:范围可以被缩小,但是不能扩大
重写的方法名字相同,方法体不同
为什么需要重写:
- 父类的功能不需要或者不满足
- alt+insert
不能重写的:
- static
- final
- private
多态
同一方法可以根据发送对象的不用采用多种不同的行为方式 一个对象的实际类型是确定的,但可以指向对象的引用类型有很多(父类,关联类)
- 多态是方法的多态
- 父类和子类,有联系
- 存在的条件:
- 继承关系
- 方法需要重写
- 父类的引用,指向的子类对象!father f1=new son();
强制类型转换
instanceof
- 父类引用指向子类的对象
- 把子类转为父类,向上转型
- 父类转为子类,需要强制类型转换,可能丢失方法