继承 对某一批类的抽象,减少代码量,便于方法的修改,类的管理

子类不能继承父类:①构造方法②私有属性和方法③使用默认修饰符不在同包下

继承初始化:父类属性->父类构造方法->子类属性->子类构造方法

继承有哪些:①重载②重写③接口④父类对象引用指向子类对象

重写规则:①方法名一样②参数列表相同③返回值类型相同或是其子类④访问修饰权限不能严于父类

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("游泳");

}

}