1、覆盖:覆盖的意思是由子类重新定义继承下来的方法以改变或者延伸此方法的行为。覆盖是在子类和父类之间发生,覆盖的方法的返回值和参数应该都相同,否则覆盖是不成功的,还是会调用原来父类的方法。
2、子类继承父类的实例对象和方法,但是可以定义自己的实例变量和方法,或者覆盖父类的方法,但是不可以覆盖实例变量。
3、用继承来防止子类中出现重复的代码
4、当你调用对象引用的方法时,你会调用到与改对象类型最接近的的方法,换句话说最低阶的会胜出。
5、继承判断:“是一个”:IS-A测试,“有一个”:HAS-A测试
6、如何在子类中引用父类的方法然后再加上额外的行为。可以实用super关键子来取用父类
public void roam{
super.roam();
//这里可以再添加子类自己的方法行为
}
7、存取权限:access level
private default protected public 从左到右权限越来越大
private:类型的成员不会被继承
public类型的成员会被继承
8继承的意义:(1)、避免了重复的代码;(2)、定义出共同的协议
9、Dog mydog = new Dog();
这里引用变量的类型和新对象的类型是一致的,都是Dog, 但是在多态中引用变量的类型和对象的类型却是可以不同的,并且运用多态时引用类型可以是实际对象类型的父类。
参数和返回类型也可以有多态。通过多态,就可以编写出引用新型子类时也不必修改的的程序。
10、如何让一个类不能被继承出子类:
(1)、第一种是存取控制,虽然类不能标记为私有,但是可以不标记为公有,而没有被标记为公有的类只能被同一个包中的类作出子类。
(2)、第二种是实用final修饰符,表示是继承树的末端,不能被继承。
(3)、让类只拥有private的构造程序。
注意:如果想要防止特定的方法被覆盖,可以将该方法标志上final 这个修饰符,如果将类标志上这个修饰符,则表示任何一个方法都不可以被覆盖。
11、重载的意义是两个方法的名称相同,但是参数不同,所以重载与多态毫无关系。重载不能使用只是让返回类型不同,只要在参数不同的前提下,返回类型才可以不同,当然也可以是相同的。也可以更改存取权限。
12、重载的定义,在同一个类中,方法名相同,参数列表不同,与返回值无关。所以只有子类重写父类的方法,没有子类重载父类