总体知识点
1. 封装
- 1.1 什么是封装
1.2 构造器
1.3什么是重载
1.4 this
1.5 static
2. 继承
- 2.1 什么是继承
2.2 子类会继承些什么?
2.3 super关键字的使用
2.4 重写
3. 多态
-
3.1什么是多态?
3.2多态的前提
3.3多态中成员访问的特点
3.4多态的好处和弊端 -
4. 上转型 下转型
4.1什么是上转型
4.2什么是下转型
4.3上转型和下转型的作用
5. 抽象
5.1抽象类的概述及其特点
- 5.1什么是抽象
6.其他小细节及强调点
Java面向对象三大特性:封装 继承 多态
this 关键字总结
类的成员方法
类的构造方法
可以使用 代表当前对象
this(实参);.//调用本类构造器
this.成员变量‘;
this.成员函数();
类的普通方法 可以使用 代表当前对象
类的静态方法 不可以使用this.super
super关键字
构造方法
super(实参);//调用父类构造方法对父类初始化
super.数据成员;
super.成员函数();、
this和super只能出现一次,this里调用默认的super()
实例化子类对象
1加载父类
2.加载子类
3.调用子类构造器(默认super)
执行父类构造代码块
执行父类构造方法
执行子类的构造方法
执行子类构造方法
类的继承层次结构中 如果子类中重写父类中相同形式则构成函数重写
重载 在同一个类中*
study(int) study_int
study(int ,int) study _ int _int
这样区分重载
重写的话子类和父类中
子类和父类形式相同 子类会把父类的相同方法覆盖 但是虽然覆盖了 仍然可以通过super.()调用 以及父类的对象调用该方法仍然是以前的方法
**
- 方法重写和重载 重载 一个类中,方法名相同,形参列表不同,对于返回值类型,修饰符都没有要求 重写
父子类,子类中定义的方法,函数名、形参列表、返回值、与父类的函数 一模一样,就构成重写 。但是
权限修饰符不能变小,抛出异常的范围不能变大。
重写方法对父类继承的方法会产生覆盖。不管是通过父类引用还是通过子类引用都可以调用,父类引用无法调用子类新增的方法。 重写的前提:
1.继承层次结构
2.方法重写
3.父类引用指向子类对象
4.父类引用 调用 子类重写方法 抽象类 用abstract修饰的类 抽象类 正常类加上abstract 不完整的类 包含抽象方法 即abstract 修饰的没有函数体的类记得分号结尾。 abstract 类型();
包含抽象方法的类,一定是一个抽象类; 抽象类中可能包含抽象方法; 抽象类无法实例化对象,一般作为父类使用; 定义抽象类的引用
指向 子类【重写抽象方法】 对象【多态体现】
final用法总结
1----->final修饰类
- final修饰的类不能被继承,该类不能作为父类进行派生
2----->final修饰方法
- 方法不能被重写、
3----->使用final 修饰变量
-
1.final 修饰成员变量
- 2.final修饰局部变量
- 3.final修饰的引用变量
★★★成员变常量 不承认默认的值,必修用户主动进行初始化★★★
public final int num2 ; ★★★如果只是这样没有 构造代码块 或者 构造方法进行赋值 则报错★★★
三种方式 1->显示初始化public final int num2 = 2;
2->构造器初始化 。假如先显示初始化后值就无法通过构造器初始化了 public final int num2 ; public son(int num2) { this.num2 = num2; }
3->构造代码块赋值 public final int num2 ; { num2 =2; }
★★★总结 :对象构造完成前 可以对 final常量进行初始化,初始化成功后其值不能改变final修饰局部变量
- 局部变量就变成了常量,初始化后值无法改变
- final修饰的局部变量 不在栈空间开辟内存, 在常量区开内存
★★★特点/好处 其值初始化确认后无法修改★★★
final修饰的引用变量
- 其值不能修改 但是其指向的堆空间里面的数据可以修改
-
补充final修饰的变量是常量,常量命名方式 都大写 多个单词用_分隔
final int GOOD_DOG = 5;
接口
-
接口类似干爹,继承是亲爹
-
接口定义格式
intertface 接口名 { public static final 数据类型 成员; public abstract 返回值 方法(); }
-
接口中的变量如果不写修饰符* 就写 数据类型 成员 系统默认是public static final 修饰的;
-
接口中的方法如果不写修饰符* 系统默认是public abstract 修饰的;
-
接口不是类,侧重功能。
-
实现类如果不是抽象类--则必须重写接口的所有抽象方法
-
可以定义接口的引用 指向 实现类对象,通过接口的引用调用被重写抽象方法
-
接口的实现类 可能是正常类
(重写所有抽象方法)
也可能是抽象类(有抽象方法未重写)
-
接口里就不存在需要初始化的变量,所以接口里
没有构造器
-
不能把接口实例化
。使用接口,一般充当父类,定义接口的实现类(implements) -
接口里可以没有常量和抽象方法
-
接口可以实现
多继承
是对ava单继承的补充 -
接口和接口之间存在继承关系 并且可以实现多继承
package
- 解决项目里的命名冲突问题,包就是文件夹
- 命名规则 公司域名+类名
- //如果在一个类中 使用其他包的类 则
一定要将该类引入
- //引入方法1: import 包名.类名
- //引入方法2 类的全包名 包名.类名 com.baidu.Person p = new com.baidu.Person(“zs”,22);
- //
引入方法3 import 包名.*;效率过低一般不使用
- /注意
就这个来说必须把person类先编译 或者 同时编译两个类
- package 声明当前类所在包\
- 解释的时候 必须要完整的名字 即
包名.类名
-lang包不用导入
package必须出现在第一行 且只能出现一个
-import 可以多次使用 导入多个包
四种权限修饰符
常见修饰符总结
权限修饰符
状态修饰符
抽象修饰符
类
权限修饰符 默认 public
状态修饰符 final (不能被继承)
抽象修饰符 abstract
private final和 abstract 修饰符 不能一起使用
内部类