1、简单说明
(1)同一个对象拥有多个状态,可以把不同的类型进行统一,让程序具有超强的可扩展性,简化了调用时的操作。
(2)“父类=子类”向上赋值:因为子类可以当做父类看,所以可以把子类赋值给父类。
(3)通过父类引用只能访问子类对象从父类继承过来的成员,通过父类引用不能访问子类对象所特有(私有)的成员。
2、测试练习
//定义鲸鱼类:继承哺乳动物类 class Whale extends Mammal{ //鲸鱼类的公有方法 public void speeking(){ System.out.println("我是生活在海里的鲸鱼。"); } } //定义蝙蝠类:继承哺乳动物类 class Bat extends Mammal{ //蝙蝠类的公有方法 public void speeking(){ System.out.println("我是蝙蝠,是能飞的老鼠。"); } } //定义海豚类:继承哺乳动物类 class Dolphin extends Mammal{ //海豚类的公有方法 public void speeking(){ System.out.println("我是白鳍豚,别人都叫我水中大熊猫。"); } } //定义哺乳动物类(连接多态) class Mammal{ //哺乳动物类的公有方法 public void speeking(){ System.out.println("动物正在说话……"); } } //定义人类 class Person{ //定义人类的行为,接收到的所有哺乳动物都是ma public void act(Mammal ma){ ma.speeking(); //并且每次都执行该哺乳动物的陈述 } } //定义主方法的类 public class Test05{ public static void main(String[] args){ Mammal ma1 = new Whale(); //创建一只鲸鱼对象 Mammal ma2 = new Bat(); //创建一只蝙蝠对象 Mammal ma3 = new Dolphin(); //创建一只海豚对象 //创建人类对象,执行动作 Person P = new Person(); P.act(ma1); P.act(ma2); P.act(ma3); } }
这样,无论有多少种哺乳动物,都可以直接继承哺乳动物类,哺乳动物类会直接调用陈述的语句。
3、向上赋值会屏蔽子类中特有的方法,此时需要向下转型
//定义鲸鱼类:继承哺乳动物类 class Whale extends Mammal{ //鲸鱼类的公有方法 public void speeking(){ System.out.println("我是生活在海里的鲸鱼。"); } //定义鲸鱼类中特有的方法 public void ejecting(){ System.out.println("一只蓝鲸正在向海面上空喷出巨大的水柱!"); } } //定义蝙蝠类:继承哺乳动物类 class Bat extends Mammal{ //蝙蝠类的公有方法 public void speeking(){ System.out.println("我是蝙蝠,是能飞的老鼠。"); } } //定义海豚类:继承哺乳动物类 class Dolphin extends Mammal{ //海豚类的公有方法 public void speeking(){ System.out.println("我是白鳍豚,别人都叫我水中大熊猫。"); } } //定义哺乳动物类(连接多态) class Mammal{ //哺乳动物类的公有方法 public void speeking(){ System.out.println("动物正在说话……"); } } //定义人类 class Person{ //定义人类的行为,接收到的所有哺乳动物都是ma public void act(Mammal ma){ ma.speeking(); //并且每次都执行该哺乳动物的陈述 } } //定义主方法的类 public class Test05{ public static void main(String[] args){ Mammal ma0 = new Mammal(); //创建一只哺乳对象(提示语句) Mammal ma1 = new Whale(); //创建一只鲸鱼对象 Mammal ma2 = new Bat(); //创建一只蝙蝠对象 Mammal ma3 = new Dolphin(); //创建一只海豚对象 //创建人类对象,执行动作 Person P = new Person(); P.act(ma0); //调用哺乳类的speeking(提示语句) P.act(ma1); //调用各个哺乳动物的speeking动作 P.act(ma2); P.act(ma3); System.out.println("------------------------------------------"); //向下转型(强制类型转换)鲸鱼对象ma1 Whale wh = (Whale)ma1; wh.ejecting(); //调用鲸鱼对象特有的方法 } }
1、简单说明
2、当修改final修饰的内容时会出现错误
3、测试练习
public class Test05{ //final常量 final int height = 180; //final常方法 public final void speeking(){ System.out.println("我是不会变心的!!!"); } //主方法 public static void main(String[] args){ //重新定义变量可以 final int height = 99; Test05 te = new Test05(); //调用本类中的方法 //te.height = 99; //修改对象值不可以 te.speeking(); } }