一、需求分析
实现一个哪国人说哪国话的功能
二、项目目录结构
三、show me your code
父类Person:
Q:为什么要设计抽象类(abstract关键字)?
A:当父类知道子类应该包含什么方法,但不知道子类将如何实现,所以先将共性取出定义成一个抽象方法,方便子类继承后重写
package com.SpeakDemo; //abstract关键字:设计抽象类与抽象方法 abstract class Person { public abstract void say(); }
子类Chinese:
package com.SpeakDemo; public class Chinese extends Person{ public void say() { System.out.println("你可以说"); } }
子类Usa
package com.SpeakDemo; public class Usa extends Person{ public void say() { System.out.println("u can talk"); } }
测试main()
package com.SpeakDemo; public class Test { public static void main(String args[]) { Person c = new Chinese(); //产生Person类的变量c,并在内存堆区产生一个Chinese对象,赋值 //尽管c属于父类Person,但是它运行的是Chinese类的say方法。 //这是由于在编译阶段,只是检查参数的引用类型;但是在运行时,JVM指定对象的类型并且运行该对象的方法。 Person u = new Usa(); //Chinses c = new Chinses(); //这样写也可以,直接产生子类的变量 //Usa u = new Usa(); c.say(); u.say(); } }