Java核心思想—面向对象
面向过程 & 面向对象
面向过程:步骤清晰
面向对象:物以类聚,分类的思维模式
面向对象
抽象,本质:以类的方式组织代码,以对象的形式组织(封装)数据。
三大特性:
- 封装
- 继承
- 多态
对象是具体的事物,类是对对象的抽象
类是对象的模板
创建与初始化对象
- 使用new关键字创建对象
- 使用new创建时,除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
- 构造器:也被称为构造方法,实例化时可以初始化对象
- 必须和类的名字相同
- 必须没有返回类型,void也不能写
public class Student {
//属性
String name;
//构造器,实例化初始值
//1.使用new关键字,本质调用构造器
//2.用来初始化值
public Student(){
}
//有参构造:一旦定义有参构造,无参就必须显示定义
public Student(String name){
this.name = name;
}
}
封装
数据的隐藏,
高内聚,低耦合
属性私有, private:私有。提供可以操作属性的方法——get/set
意义:
1.保护数据,提高查询安全性
2.隐藏代码实现细节
3.统一接口
4.提高系统可维护性
继承
本质:对某一批类的抽象。
关键字 extends
继承是类与类之间的关系,子类与父类之间具有”is a"的关系。Java都是单继承
私有的属性与方法不可被继承
- object类——所有类都继承于object类
- super-this
- super调用父级属性与方法
- this调用自身所在类的属性与方法
- 方法重写
- 子类重写父类的非静态方法。
- 静态方法属于类级别
- 非静态方法属于实例级别
- 参数列表必须相同
- 方法名必须相同
- 返回类型必须相同
- 抛出的异常不可扩大
- 子类重写父类的非静态方法。
父类引用指向子类对象
一个对象的实际类型是确定的,可以指向的引用类型是不确定的
此时引用可以访问:
- 父类中声明的所有public属性
- 父类中声明的protected属性
- 父类中默认访问权限的属性
- 子类中重写父类的方法
不能访问:
- 子类中独有的属性
- 子类中隐藏父类的属性(子类声明中与父类同名的属性)
- private属性
多态
-
方法的多态
-
父类和子类有联系,类型转换异常!ClassCastException!
-
存在条件:继承关系;方法需要重写;父类引用指向子类对象
注意事项:
- 属性没有多态
- 静态方法没有多态,static方法属于类方法
- private和final方法不能重写
- 构造方法不能重写
- 向下转型需要类型检查、
- 重写方法时,子类方法访问权限不能比父类更严格
Static关键字
static关键字的内容会在java程序执行第一个被加载到内存中
static成员在类加载时就初始化
主要应用
1.静态变量(类变量)
2.静态方法
3.静态代码块
4.静态内部类
5.静态导入
注意事项:
1.线程安全问题
2.内存泄漏风险
3.测试困难
4.过度使用破坏对象的封装性
浙公网安备 33010602011771号