一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
继承
概念
指子类从它的父类中继承可访问的数据成员和方法,是一种代码重用的手段。
- 子类是父类的子集
- 子类拥有父类的成员和方法,不需要再定义,直接用就行
- 父类中的private成员变量不可直接使用,但可通过public成员方法间接访问
- 在子类继承父类的时候,子类的构造方法必须调用父类的构造方法;
- 如果父类有默认无参数构造方法,子类实例化时会自动调用.如果父类没有默认无参数构造方法,子类构造方法必须显式的通过super调用父类的有参数构造方法;
- 子类不能继承父类的构造方法,只能调用父类的构造方法。
定义
- [ 类修饰符] class 类名 extends 父类名 { 成员变量定义; 方法定义; }
- this 与super
- 如果子类有和父类同名的方法或属性,需要用this/supri来区分
- 在父类定义的,可以用super来引用(指父类对象)
- 自己新添加的,用this来引用(指当前对象)
- (从父类带过来的也是子类的一部分,所以如果在父类和子类中没有重名的话,实际上都可以用this来引用)
- this
- 用this来引用当前对象的成员变量或成员方法。
- 在构造方法内用this来调用类中的另一个构造方法。
- 在构造方法内把this当做参数传递给其他方法。
例如
- super
- 引用父类的成员变量或成员方法。
- 调用父类的构造方法。
子类只能在子类的构造方法中调用父类的构造方法,而且必须调用父类的构造方法,调用语句必须写在子类构造方法的第一行。
- 子类变量隐藏了父类的同名变量
- 子类中定义一个方法,其名称、返回类型及参数签名正好与父类一样,则子类的方法覆盖了父类的同名方法。
- 子类中有无参数的空构造方法,但父类中只写了有参数的构造方法,此时子类的无参数构造方法会自动调用父类的无参数的构造方法,但由于父类没有无参数构造方法,造成调用失败。
访问控制符
- private
- 修饰成员变量、成员方法、构造方法以及内部类
- 所属类内
- 默认权限
- 修饰成员变量、成员方法、构造方法、类和接口
- 同一包内
- 不写访问控制符的就是默认访问权限
- protected
- 修饰成员变量、成员方法、构造方法以及内部类
- 同一个包或它的子类
- public
- 修饰成员变量、成员方法、构造方法以及类和接口
- 被任何类访问
类变量、实例变量与局部变量
- 成员变量
- 定义在类体内且在方法外的变量
- 分为实例变量和类变量
- 类变量
- 带关键字static
- 所有该类的对象共享这一个类变量
- 访问方法有两种
- 对象名.变量名
- 类名.变量名
- 实例变量
- 不带关键字static
- 每个对象拥有自已独立的实例变量
- 访问方法有一种
- 对象名.变量名
- 局部变量
- 定义在方法内
- 一种是方法体内定义的变量
- 必须赋初值后才能使用
- 一种是方法的形参
类方法与实例方法
- 类方法
- 加static
- 所有该类的对象共享这一个类方法
- 不用创建对象就可以使用
- 访问方法有两种
- 对象名.方法
- 类名.方法()
- 类中的实例方法可以操作类变量,类方法不可以直接操作实例变量,可以对象引用。
- 实例方法
- 不加static
- 每个对象拥有自已独立的实例方法
- 必须在创建了对象后
- 访问方法有一种
- 对象名.方法
static代码块
- 格式
- static{普通java代码; }
- 不需要创建对象,运行比mian方法还早
final修饰符
- 修饰变量、方法、类
- 只能被赋值一次,后面不能改变
- 定义时赋值或在类的初始化代码块中赋值
定义
- static变量
- [访问修饰符] static final 数据类型 变量名[=value];
- 实例变量
- [访问修饰符] final 数据类型 变量名[=value];
- 局部变量
- final 数据类型 变量名[=value];
- 成员方法
- final修饰的成员方法表示在子类中不能被覆盖
- [访问修饰符] final 数据类型 方法名([参数列表]){}
- 类
- final修饰的类表示在该类不能有子类。
- [访问修饰符] final class 类名{};
对象的初始化顺序
- 有继承时
- 父类的类变量和static代码块。
- 子类的类变量和static代码块。
- 父类的实例变量。
- 父类的构造方法。
- 子类的实例变量。
- 子类的构造方法。
- 无继承时
- 类变量和static代码块
- 实例变量
- 构造方法
Prev
面向对象编程
Next
抽象类和接口
Loading...