目录
- 继承 extends
- 访问控制符/权限修饰符
- 方法重写的详细规范:
- 接口: 特殊的抽象类
- 回顾面对对象的概念:
继承 extends
父类: 子类中共同的成员变量, 成员方法
子类: 会继承父类中所有的成员变量和成员方法
继承: 1 v 1
构造方法的调用: super()
方法的重写: 参数\返回值\方法名 一致
抽象方法:
没有方法体, 直接 ; 结束
需要使用 abstract 来修饰
抽象类: abstract
类中如果有抽象方法, 类就一定是抽象类
不能实例化, 有构造方法
子类继承抽象类, 就必须实现所有的抽象方法
访问控制符/权限修饰符
修饰: 类, [静态]成员变量, [静态]成员方法, 构造方法
public: 公开的, 公共的
protected: 受保护的
(default): 默认的, 不加default关键字, 不写任何内容
private: 私有的
自己类中
同包(没有关系的类)
父子类(不同包)
所有类(即不同包,也不是父子关系)
权限范围由大到小: public->protected->default->private
default: 不常用, 练习时为了省略代码
public : 想要提供给其他类使用的成员
protected: 想要给子类继承的成员
private: 所有的普通成员变量
封装: 为了保证成员变量的安全性, 给设置为私有的
提供给外部访问这个成员变量的方法 get/set
JavaBean规范 -> 所有的实体类
1.命名 驼峰命名法
2.成员变量私有化, 提供get/set方法
3.提供空参构造方法
static: 静态的, 属于类的, 修饰成员变量/成员方法
abstract: 抽象的, 修饰类/成员方法
final: 最终的, 修饰类/成员方法/成员变量/局部变量
修饰类: 类不能被继承
修饰方法: 方法不能被重写
成员变量: 变量不能被修改, 必须初始化
// final 修饰成员变量, 必须初始化: 声明的同时,构造方法中,代码块中final int b;{b = 10;}
局部变量: 变量不能被修改, 必须初始化
引用类型变量: 引用地址不能被修改, 内容可以修改
// final修饰局部变量, 只能一次赋值, 不能修改final int b; // --> 常量b = 20;
// b = 30;System.out.println(b);byte b1 = 57;b1 = 23 + 34; // 字面量相加, 加完发现在127范围内byte b2 = 120;
// b1 = b2 + 34; // 变量相加, 不确定范围, 认定为int类型, 编译错误final byte b3 = 23;b1 = b3 + 34; // 常量和字面量, 加完发现范围没有超过
方法重写的详细规范:
1.子类中的方法名和参数列表要和父类中一致
@Override 检测这个方法是不是重写, 方法语法不符合重写, 就会报错
如果语法符合, 没有加@Override, 也属于重写
2.子类中的权限, [大于等于] 父类中的方法权限
3.子类中的返回值, [小于等于] 父类中的返回值类型
引用类型 小于等于: Zi -> Fu -> Object Fu->Zi(×)
基本数据类型, 只能相同
Fu fu = new Zi(); // √
Zi zi = new Fu(); // ×
4.异常
接口: 特殊的抽象类
抽象类: 可能会存在抽象方法
接口中可以有
不论什么版本
1.公开的抽象方法
2.公开的静态常量
JDK8 开始
3.静态的方法 static
属于接口的, 通过接口直接调用
4.默认的方法 default
通常用来做接口功能的扩展, 可以在实现类中覆盖
JDK9 开始
5.私有方法 private
普通的私有方法: 为了给default方法中的公共代码提取, 实现代码复用
静态的私有方法: 给static方法中公共代码提取的
回顾面对对象的概念:
在类(静态)方法中, 不能直接调用成员变量和成员方法
成员方法中, 可以直接调用类方法和类变量
使用接口的步骤 implements:实现
1.接口不能直接new对象, 需要一个实现类来 实现接口
public class A implements InterfaceA {
}
将接口中的所有抽象方法 覆盖重写(实现)
2.创建实现类对象, 调用方法
注意事项: 实现类没有覆盖重写(实现)所有的抽象方法, 这个实现类必须是抽象的
关系:
1.类和接口: 1 v n implements 实现
2.类和类 : 1 v 1 extends 继承
3.接口和接口: 1 v n extends 继承
4.接口和类: 没有
小结概念:
成员变量
成员方法
主方法
局部变量
初始化
实例化:通常把用类创建对象的过程称为实例化
Date date=new Date();
赋值
方法返回值的接收