面向对象(含义→三大特点)
面向对象编程
面向过程 & 面向对象
面向过程:第一第二步做什么...线性思维,是和处理较为简单的问题
面向对象:分类的思维方式,适合处理复杂的问题
什么是面向对象
面向对象编程OOP
本质:以类的方式组织代码,以对象的组织(封装)数据
核心思想:抽象
三大特性:封装、继承、多态
从认识论角度,先有对象再有类。对象是具体的,类是抽象的
从代码运行角度,先有类再有对象
类与对象的关系
类:
抽象的数据类型,是对某一类事物整体描述。如动物、植物
对象:
抽象概念的具体实例
创建和初始化对象
使用new关键字
使用new创建时,除了分配内存空间,还能给创建好的对象默认初始化以及对类中构造器的调用
Student student = new Student();
构造器
类中的构造器也叫构造方法,创建对象是必须调用。使用new关键字,本质上是在调用构造器
特点:
必须和类的名字相同
必须没有返回值,也不能写void
无参构造和有参构造
public class Person{
//无参构造
public Person(){
...
}
//有参构造:一旦定义有参构造,无参就必须显示定义
public Person(String name){
...
}
}
快捷键:alt+insert
方法
定义
修饰符,返回类型,方法名,参数列表
已有,看前面
break和return区别
break:跳出switch,结束循环
return:结束方法
异常抛出
调用
静态方法,非静态方法
静态方法: 和类一起加载
static,类名.方法名即可调用
Student.setName();
非静态方法: 类实例化之后才存在
没有static,先实例化类(new)再调用
Student student = new Student();
student.setName();
在同一类中
非静态方法可调用非静态
静态方法不可调用非静态
形参和实参
形参:方法的参数
实参:调用方法的参数
值传递和引用传递
值传递:把值复制一份进行传递,方法内部修改不影响外部原本的值
引用传递:传递存储数据的地址,修改后原值也修改
this关键字
三大特点
封装
程序设计追求“高内聚,低耦合”
高内聚:类的内部数据操作细节自己完成,外部不能干涉
低耦合:尽暴露少量的方法给外部使用
封装(数据的隐藏):private
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问
属性私有,get/set
提高代码的安全性,保护数据
隐藏代码的实现细节
同一接口
系统可维护性增加
继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
extends意识是“拓展“。子类是父类的拓展
Java中类只有单继承
继承是类和类之间的一种关系。除此外还有依赖、组合、聚合
继承关系的两个类,一个是子类(派生类),一个是父类(基类),使用extends关键字
子类和父类之间,意义上应该具有“is a”关系
public class person extends Person{
...
}
子类继承父类,就拥有父类全部public方法
Object类
在Java中,所有的类都默认继承Object
super
调用父类的构造方法,必须在构造方法第一个
super必须只能出现在子类的方法或者构造方法中
this和super不能同时调用构造方法
方法重写
重写必须有继承关系,子类重写父类的方法
参数列表必须相同
修饰符:范围可以扩大,但不能缩小
抛出的异常:范围可以缩小,不能扩大
为什么需要重写:父类功能子类不需要或者不满足
//前提 A继承B,对于两个类都存在的同名static方法
//方法的调用之和左边定义的数据类型有关
A a = new A();
a.test(); //引用A的test方法
B b = new A();
b.test(); //引用B的test方法
//在上述基础上
//若方法无static,则可在A类中Override重写test方法
当没有static时,b调用的是对象的方法。而b是用A类new的有static时,b调用了B类的方法,因为b是用b类定义的
因为静态方法是类的方法,而非静态是对象的方法
即b是A new出来的对象,因此调用了A的方法

浙公网安备 33010602011771号