继承 对某一批类的抽象,减少代码量,便于方法的修改,类的管理
子类不能继承父类:①构造方法②私有属性和方法③使用默认修饰符不在同包下
继承初始化:父类属性->父类构造方法->子类属性->子类构造方法
继承有哪些:①重载②重写③接口④父类对象引用指向子类对象
重写规则:①方法名一样②参数列表相同③返回值类型相同或是其子类④访问修饰权限不能严于父类
private(本类)>default(同包)>protected(同包及子类)>public(全部)
super / this关键字不能应用于static修饰方法里
package com.huidao.day10;
/*问题:
实现主人与宠物玩耍功能
和狗狗玩接飞盘游戏。
和企鹅玩游泳游戏。
------继承
分析:
给Dog添加接飞盘方法catchingFlyDisc( )
给Penguin添加游泳方法swimming( )
给主人添加play(Pet pet)方法*/
public class Test03 {
public static void main(String[] args) {
Master master = new Master();
Pet dog = new Dog();
master.play(dog);
Pet penguin = new Penguin();
master.play(penguin);
}
}
class Master{
Pet pet;
public void play(Pet pet){
pet.shout();
if (pet instanceof Dog) {
Dog dog = (Dog)pet;
dog.catchingFlyDisc();
} else if (pet instanceof Penguin) {
Penguin penguin = (Penguin)pet;
penguin.swimming();
}
}
}
class Pet{
public void shout(){}
}
class Dog extends Pet{
//重写的方法
public void shout(){
System.out.println("狗叫");
}
//普通方法
public void catchingFlyDisc(){
System.out.println("接飞盘");
}
}
class Penguin extends Pet{
public void shout(){
System.out.println("企鹅叫");
}
public void swimming(){
System.out.println("游泳");
}
}