多态性 ●同一运算或方法(如“+”)对不同类型的 对象(如整型数,或字符串)有不同的语 义解释。这种在程序中同一方法对不同类 型的对象有不同解释的现象称为多态性 ●多态性与继承是密不可分的。通常,两类 对象都有共同的父类,在父类中定义的方 法在这两个子类中分别有不同的实现
多态性 同一运算或方法(如“+”)对不同类型的 对象(如整型数,或字符串)有不同的语 义解释。这种在程序中同一方法对不同类 型的对象有不同解释的现象称为多态性 多态性与继承是密不可分的。通常,两类 对象都有共同的父类,在父类中定义的方 法在这两个子类中分别有不同的实现
超类与子类 ●我们在声明类A时,指明类A继承了 类B(类B是一个已定义了的类) 则类A通常就拥有了类B的成员变量 和方法。此时,类B称为类A的直接 超类( superclass),超类也称为父 类或基类;类A称为类B的直接子类 ( subclass),子类也称为派生类
超类与子类 我们在声明类A时,指明类A继承了 类B(类B是一个已定义了的类), 则类A 通常就拥有了类B的成员变量 和方法。此时,类B称为类A的直接 超类(superclass),超类也称为父 类或基类;类A称为类B的直接子类 (subclass),子类也称为派生类
继承的描述 ●Java语言中,声明类首部的格式 如下: [类的修饰符] class类名[ extends超类名l[ implement接口名表 ●其中“ extends超类名”部分就是用 来描述继承的,这里超类名指明所 明类的直接超类
继承的描述 Java语言中,声明类首部的格式 如下: [类的修饰符] class 类名 [extends 超类名][implement接口名表] 其中“extends 超类名”部分就是用 来描述继承的,这里超类名指明所 声明类的直接超类
继承描述的演示 class car 声明car类 int car number; void set number(intcar_ num) car number= car num. void shot System. out printin("我的车号是:"+ car number); class trashCan extends Car∥声明 Trashcan类,它继承ca类 int capacity; void set capacity (int trash_ car_ capacipy) capacity =trash_car_ capacipy void show capacity System. out println("我的容量是:"+ capacIty+"");
继承描述的演示 class Car // 声明Car类 { int car_number; void set_number(int car_num) { car_number = car_num; } void show_number( ) { System.out.println("我的车号是:"+car_number); } } class TrashCar extends Car // 声明TrashCar类,它继承Car类 { int capacipy; void set_capacity(int trash_car_capacipy) { capacipy = trash_car_capacipy; } void show_capacity( ) { System.out.println("我的容量是:"+capacipy+" "); } }
类的继承规则 直接子类继承那些被声明为 public或 protected的直 接超类成员(包括成员变量和成员方法,下同) 直接子类继承那些未被存取权限修饰符修饰的直接 超类成员,只要该子类与该超类在同一个包中 ●如果直接子类声明了一个与直接超类中的成员回名 的成员,则该子类不继承该超类中的该同名成员 ●直接子类不继承被修饰为 private的直接超类的成员
类的继承规则 直接子类继承那些被声明为public 或protected的直 接超类成员(包括成员变量和成员方法,下同) 直接子类继承那些未被存取权限修饰符修饰的直接 超类成员,只要该子类与该超类在同一个包中 如果直接子类声明了一个与直接超类中的成员同名 的成员,则该子类不继承该超类中的该同名成员 直接子类不继承被修饰为private的直接超类的成员