1、子类通过extends继承父类,就可以自动拥有父类中定义的非private的属性和方法。(二者不同包时,子类也不能获得默认级别的。)
2、Java语言不支持多继承。
3、方法重载和方法覆盖。
方法重载要求:名字相同;参数不一致;返回值和修饰符的名字和顺序可以不同。
方法覆盖(8条):基本、权限、异常、静态、抽象。
子类的方法名,参数,返回类型必须与父类的一致;
子类的方法不能缩小父类方法的访问权限,否则将和多态机制发生冲突;
子类抛出的异常必须和父类的异常相同或是其子类异常;
父类的静态方法不能被子类覆盖为非静态方法;
父类的非静态方法不能被子类覆盖为静态方法;
子类和父类不能定义同名的静态方法;
子类可以实现父类的抽象方法或重新定义它;
抽象子类可以继承非抽象父类,可以将父类的非抽象方法重新定义成抽象方法。
4、多态
字面含义是:Animal animal中animal既可以是Animal,也可以是Dog,还可以是Creature。实质是:Java允许某个类型的引用变量引用子类的实例
animal-->Creature是向上转型(Creature creature = animal;)
animal-->Dog是向下转型Dog dog = (Dog)animal;
对于多态,调用成员变量和成员函数的原则:Animal animal = new Dog();
animal调用方法时,只有实例方法是看右边(Dog),其他全看左边(Animal)。
2、Java语言不支持多继承。
3、方法重载和方法覆盖。
方法重载要求:名字相同;参数不一致;返回值和修饰符的名字和顺序可以不同。
方法覆盖(8条):基本、权限、异常、静态、抽象。
子类的方法名,参数,返回类型必须与父类的一致;
子类的方法不能缩小父类方法的访问权限,否则将和多态机制发生冲突;
子类抛出的异常必须和父类的异常相同或是其子类异常;
父类的静态方法不能被子类覆盖为非静态方法;
父类的非静态方法不能被子类覆盖为静态方法;
子类和父类不能定义同名的静态方法;
子类可以实现父类的抽象方法或重新定义它;
抽象子类可以继承非抽象父类,可以将父类的非抽象方法重新定义成抽象方法。
4、多态
字面含义是:Animal animal中animal既可以是Animal,也可以是Dog,还可以是Creature。实质是:Java允许某个类型的引用变量引用子类的实例
animal-->Creature是向上转型(Creature creature = animal;)
animal-->Dog是向下转型Dog dog = (Dog)animal;
对于多态,调用成员变量和成员函数的原则:Animal animal = new Dog();
animal调用方法时,只有实例方法是看右边(Dog),其他全看左边(Animal)。