目录
一,包 , 访问修饰符
* 包:com.域名.***
目的: 针对资源做详细的划分
* 访问修饰符
访问权限: 本类 同包 子类 其他(不同包或者不存在继 承关系)
Private :私有 Y N N N
默认: 不写 Y Y N N
Protected: 受保护 Y Y Y N(只能在同一个包或者存 在继承关系才可以引用)
Public:公共 Y Y Y Y(导包)
二 , 重写,重载
* 重写:
0.参数一致
1.方法名一致
2.返回类型一致
3.子类的访问修饰符权限不能比父类还低。
* 重载:
1.方法名相同
2.参数列表不同
3.与返回值无关
4.与访问修饰符无关
5.同类之中重载
三,抽象类 ,final关键字
* 抽象方法
[访问修饰符] abstract 返回值类型 方法名(参数列表) ;
1.抽象方法即用abstract修饰,没有方法体的方法(因为实现这个方法没有意义 , 所以定义为抽 象方法)
2.拥有抽象方法的类必须定义为抽象类(抽象类不能实例化,这样也就不能调用里面的抽象方法 了)
3.父类的抽象方法,子类必须重写该抽象方法(如果不去重写,也可以把子类也定义为抽象类, 这样就相当于子类继续继承父类的抽象方法)
*抽象类
[访问修饰符] abstract class 类名{ }
1.抽象类不能实例化(不能new一个对象)
2.抽象类不一定有抽象方法 , 但有抽象方法的类一定是抽象类
*final修饰符
1.final修饰方法:表示此方法不能被覆盖
2.final修饰变量:表示该变量是一个常量,即不能再对这个变量重新赋值
3.final修饰类:表示这个类不能在被其他类继承(所以抽象类不能被final修饰)
四,多态
* 什么是多态?
同一个引用类型,使用不同实例而执行不同操作。
简单来说,就是比如有一个宠物类 , 它下面有很多猫 , 狗,虎等宠物,他们都共有一个实现吃饭的方法,那么我们在喂养的时候,不需要每一个宠物都去调用,因为它们都继承宠物这个类,所以我们在调用的时候,可以用pet dog = new dog() ; 这样我们接收到的参数类型是宠物类型,但实际传过去的是狗这个对象。
* 为什么要使用多态?
多态解决了程序的拓展性问题,使其涵盖范围更广。
* 怎么使用多态?
---编译时多态:编译阶段,该对象属于哪个类,则调用哪个类的方法(pet类)
---运行时多态:运行阶段,根据对象的引用找到堆中实际类的对象,调用实际方法的原型。(实际的dog对象)