1.面向过程与面向对象
面向过程,适合简单程序.一步一步去实现,以函数进行组织
面向对象,适合复杂程序设计,先宏观分类,类与类之间建立联系,以类进行组织
代码复用,代码扩展
2.类和对象
类是一类事物属性和行为的抽象(概念,模版)
对象十一类为模版在内存中创建出来的一个实例(对象,具体可以使用的)
成员变量(静态成员变量 非静态成员变量)
成员方法(静态成员方法 非静态成员方法)
代码块(实例代码块 静态代码块)
构造方法 特殊 用来为成员变量初始化
对象与引用
引用类型变量
Car car=new Car();
Car car1=car;
对象在堆内存中存储
car拿到不是对象本身,而是对象的内存地址
3.this关键字表示当前正在调用的对象
4.static关键字
static表示静态,可以修饰成员变量,成员方法,代码块,内部类static修饰的变量就是静态变量(类变量,与类一样,只有一份)
当所有类的对象的某个属性值相同时,可以把它定义为静态的
5.包 管理类,避免类重名,按功能进行组织管理,访问权限控制
6.访问权限修饰符
public :公共权限,在系统中哪里都可以访问
可以修饰类(包含内部类),方法(构造方法,成员方法),成员变量
protected: 受保护权限,在同包类,本类,不同子类可以访问
可以修饰内部类,方法(构造方法,成员方法),成员变量
默认 : 默认权限,在本类,同包类访问
可以修饰类(包含内部类),方法(构造方法,成员方法),成员变量
private : 私有权限,只能在本类中使用
可以修饰内部类,方法(构造方法,成员方法),成员变量
7.面向对象3大特征--封装
成员变量与局部变量
位置:
成员变量:在类中定义 局部变量:在方法中定义或者方法的参数
权限修饰不同
成员变量:可以使用权限修饰符(static)
局部变量:不可以使用权限修饰符
初始化不同:
成员变量: 非静态----在创建对象后,由构造方法初始化
静态----类加载时初始化
局部变量:声明后,使用前必须自己进行初始化
生命周期不同:(什么时候创建,什么时候销毁)
成员变量: 创建 销毁
非静态---创建对象 对象被垃圾回收
静态-----类加载时 类被卸载
局部变量: 创建 销毁
当方法被调用 当方法执行结束
在内存中位置不同:
成员变量: 非静态----与对象在堆空间存储
静态----与类信息在方法区中存储
局部变量: 与方法一样在栈空间中存储
使用访问权限对类成员进行隐藏
成员变量私有化
构造方法私有化
8.继承
特点:
如果一个类没有使用extends关键字显示的继承其他类,则默认继承object类
一个类不能继承多个类,只能继承一个类,但是可以多层继承
优点:
减少代码冗余,提高代码复用性
更有利于功能的扩展(可以在类中维护各自的属性)
类与类产生了is-a的关系,为多态使用提供前提
方法重写
规则:
方法名相同,参数相同,返回值相同
子类重写的方法权限必须等于或大于父类方法的权限
子类重写方法结构应与父类方法结构一致
注意:
构造方法,静态方法,成员变量不能重写
super
在子类中使用super关键字,访问父类定义的那部分成员.
super.成员变量 super.成员方法(常用)
继承中构造方法调用
默认在子类构造方法中会默认调用父类的构造方法 每当创建子类时,会调用子类构造方法,在子类构造方法中调用父类的构造方法
而且在子类构造方法第一行就会调用父类构造方法,先确保父类中的成员初始化
子类构造方法中默认会调用父类无参构造方法
如果需要显示的使用super调用,必须放在构造方法的第一行
还可以调用父类中指定的构造方法
9.抽象类和抽象方法
抽象类: 被abstract关键字修饰的类,里面可能包含抽象方法
当类中没有足够的信息(抽象方法)来描述具体的对象时
抽象类除了不能创建对象外,类的其他功能都正常(成员变量,成员方法,构造方法)抽象类位于类结构的上层
静态方法不能被修饰为抽象方法
一个类可以有多个抽象方法
10.多态
类与类继承关系
父类类型表示子类对象
优点:
提高代码的扩展性
缺点:
为了实现多态性, 将子类类型向上转为了父类类型,但是一旦类型上升为父类类型就调用不到子类中特有的方法.
11.接口
功能: 是一种更为彻底的抽象,主要用来定义功能
接口不能被创建对象
接口和抽象类区别
接口与抽象类都不能创建对象
(1)接口主要用来实现功能,表示这个对象能做什么,有什么功能
抽象类主要用来抽象类型,表示这个对象是什么
(2)接口只能有方法的声明,没有方法的实现
抽象类有方法的声明,也可以有方法的实现
(3)接口可以继承其他多个接口,
类只能直接继承一个类,间接多层继承多个类
(4)继承接口类必须实现接口中的所有声明的方法,
抽象类的子类可以部分实现父类的抽象方法
面向对象核心知识点
于 2024-04-05 12:52:03 首次发布