1.1 继承基础
1.在java中,继承通过extends关键字来实现,
2.父类又叫基类和超类。
3.修饰符如果是public,该类在整个项目中可见:不写Public修饰符则该类只在当前包中可见。
4.Java中只支持单继承,即每个类只能有一个直接父类。继承表达的是is a的关系,或者说是一种特殊和一般的关系。
5.所有的Java类都字节或间接地继承了java.lang.Object 类。
6.在java中子类可以从父类中继承到那些“财产”呢?
A)继承Public和protected修饰的属性和方法 ,不管子类和父类是否在同一个包里。
B)继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里。
C)无法继承private修饰的属性和方法。
D)无法继承父类的构造方法。
1.2 重写继承关系中的构造方法
1.在子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖(overriding)。方法重新必须满足如下要求:
A)重写方法和被重新方法必须具有相同的方法名。
B)重写方法和被重写方法必须具有相同的参数列表。
C)重写方法的返回值类型必须和被重新方法的返回值类型相同或者是其子类。
D)重写方法的不能缩小被重写方法的访问权限。
2.在子类中通过“Super”关键字来调用父类的成员。
A)super必须是出现在子类中(子类的方法和构造方法中),而不是其他位置。
B)可以访问父类的成员,例如父类的属性,方法,构造方法
C)注意访问权限的限制,例如无法通过super访问private成员
3.继承关系中的构造方法调用的规则如下:
A)如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this 显示调用自身的其他构造方法,则系统会默认调用父类的无参构造方法,在这种情况下,写不写“super();“语句,效果都一样。
B)如果子类的构造方法中通过super显示调用父类的有参构造方法的,那将执行父类相应构造方法,而不执行父类的无参构造方法。
C)如果子类的构造方法中通过this 显示调用自身的其他构造方法,在相应的构造方法中应用以上两条规则。
D)特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则则会多次向更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止。
1. 抽象类和final
A) 抽象类和抽象方法都通过abstract关键字修饰
B) 抽象类不能被实例化,抽象类中可以没有,可以有一个或多个抽象对象,甚至可以全部方法都是抽象方法。
C) 抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。子类必须重写所有的抽象方法才能实例化,否则子类还是一个抽象类。
2. final修饰符
a) 用final修饰的类不能再被继承。
b) 用final修饰的方法,不能被子类重写,
c) 用final修饰的变量(包括成员变量和局部变量)将变成常量,只能赋值一次。
1.3常见错误
1.final修饰引用类型变量,变量所指对象的属性是否能改变
结论:使用final修饰引用型变量,变量的值是固定不变的,而变量所指向的对象的属性值是可变的。
2.abstract是否可以和private、static、final共用
结论:
A)abstract不能和private同时修饰一个方法;
B)abstract不能和static同时修饰一个方法;
C)abstract不能和final同时修饰一个方法或类。
资料:
A)在构造方法中如果有this语句或super语句出现,只能是第一条语句。
B)在一个构造方法中不允许同时出现this和super语句
C)在类方法中不允许出现this或super关键字
D)在实例方法中this和super语句不要求是第一条语句,可以共存
补充:重载(overloading)和重写(overriding)有什么区别和联系?
重载涉及同一类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无关。 重写涉及的是子类和父类之间的同名方法,要求方法名相同、参数列表不同、返回值类型相同(或是其子类)、