1 继承
public class Doctor
{
boolean worksAtHospital;
void treatPatient()
{}
}
public class FamilyDoctor extends Doctor
{
boolean makeHouseCalls;
void giveAdvice()
{}
}
2 继承层次的设计
1.找出具有共同属性和行为的对象
2.用继承来防止子类中重复的程序代码
3.决定子类是否需要让某项行为具有不同的方式
4.通过寻找使用共同行为的子类来找出更多抽象化的机会
5.完成类的继承层次
3 引用父类
public void roam()
{
super.roam();
}
4 继承范围
(简单理解)
public会被继承
private不会被继承
(深入理解)
父类的变量和方法全部被子类继承(拥有),但是其中私有方法和变量不被子类看见(无权访问),所以导致子类直接调用不了继承过来的父类的私有变量和方法。那么,怎么访问呢?子类找到父类中能够访问该私有变量和方法的公共方法就可以。
public class Test {
public static void main(String[] args) {
Son s1 = new Son();//创建一个子类对象
System.out.println("子类的name = "+s1.getName()); // 第一次获取子类的name
System.out.println("-----------------");
s1.setName("小强");
System.out.println("子类的name = "+s1.getName()); // 第二次获取子类的name
}
}
class Father {
private String name = "父类";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Son extends Father {
}
5 多态
1.运用多态时,引用类型可以是实际对象类型的父类。
Animal myDog = new Dog()
2.参数和返回类型也可以多态。
6 防止继承
1.存取控制。非公有的类只能被同一个包的类继承。
2.使用final修饰符。表明其为继承树末端,不能被继承。final也可以修饰方法。
3.让类只拥有private的构造程序。
7 覆盖的规则
1.参数必须要一样,且返回类型必须兼容。(返回类型可以是父类返回类型的子类)
2.不能降低方法的存取权限。
8 方法的重载
1.返回类型可以不同。
2.使用不同的参数。
3.可以任意更改存取权限。