1、封装的优点
保护实例变量(用访问修饰,通常是private)
建立public访问器方法,强制调用代码使用
对于方法,使用JavaBean命名规则set<someProperty>和get<someProperty>
2、重写和重载方法
重写:
参数列表必须完全与被重写的方法相同;
返回类型必须完全与被重写方法的返回类型相同;
访问修饰符一定不能比被重写方法的强;
访问级别限定性可以比被重写的方法弱;
重写方法一定不能抛出新的检查异常或比被重写方法声明的检查异常更广的检查异常
重写方法抛出更少的或更有限的异常;
不能重写被标识为final的方法
若不能继承一个方法,就不能重写他
重载:
被重载的方法必须改变参数列表
被重载的方法可以改变返回类型
被重载的方法可以改变访问修饰符
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载
调用重载方法:
是基于参数的:a.相匹配的参数类表,b.传递的引用类型决定调用哪个重载方法多态性不决定调用哪个重载版本;多态性只有决定调用方法的哪个重写版本。
3、构造函数和实例化
构造函数链:《调用栈》
1)、调用Horse构造函数super
2)、调用Animal构造函数super
3)、调用Object构造函数栈顶
4)、为Object实例变量赋于初值 完成
5)、为Animal实例变量赋予初值 完成
6)、为Horse实例变量赋予初值 完成
规则:
- 任何访问修饰符,没有返回类型,默认访问修饰符是无参构造函数
- 如果输入了构造函数而没有输入对super的调用。编译器将添加它,除非已经插入了对this()的调用。
- 每个构造函数必须在第一行调用this()和super()
- 无参构造函数不必是默认构造函数,默认构造函数总是无参总是无参构造函数。
- abstarct类有构造函数,只有当具体的子类实例化时才调用
- 接口没有构造函数
- 调用构造函数的唯一方法是从另一个构造函数之内调用
只有当你没有在类中编写任何构造函数时,自动调用默认构造函数。
默认构造函数->与类同访问修饰符,无参,包含对父类的super调用。
4、合法返回类型
- 可以在具有对象引用返回类型的方法中返回null
- 数组是完全合法的返回类型
- 原始类型是完全合法的返回类型显示、隐士转换
- void不能return
- 返回的对象引用,可以隐含转换
- 声明抽象类或接口的返回类型的方法的任何对象通过is-a测试的都能够返回。(返回类is a 声明的返回类型)