java 的抽象类解释

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:05:43
public class GuessGameDemo
{
public static void main(String[] args)
{
AbstractGuessGame guessGame = new TextModeGame();
boolean a = guessGame instanceof AbstractGuessGame;
boolean b = guessGame instanceof TextModeGame;
System.out.println(a+" "+b);
guessGame.setNumber(50);
guessGame.start();
}
}
AbstractGuessGame是一个定义的抽象类,TextModeGame是继承AbstractGuessGame

AbstractGuessGame guessGame = new TextModeGame();
我有点弄不懂的是这句话意思,是不是说:创建一个TextModeGame实例对象且是AbstractGuessGame????
为何这样写的话,AbstractGuessGame就会自动使用子类扩展抽象函数方法???
有哪位高手可以指点一下,说明一下原因,最好能够举个比较好的例子么???

这是一种面向接口的编程,就是父类的引用指向了子类对象。
打个比方一个抽象类:动物,一个子类:狗
狗继承了类 动物
动物 dongwu = new 狗();
new出来狗的对象的引用(指向)了dongwu,通过dongwu来访问狗增加了程序的通用性和灵活性,是一种充分体现了面向对象编程的多态性。
运行的时候可以统一调用dongwu的方法,来动态实现狗的特性。
动物也可以指向猫:例如:
动物 dongwu = new 猫();
如果有个方法 动物 叫
则可以统一用dongwu.叫() 在运行时动态的选择调用哪个对象,
你传的是new 猫() 则调用猫叫方法,
如果是new 狗() 则调用狗叫方法
以后你会经常碰到这种写法。 抽象类,或者接口都可以这样:
接口(抽象类)一个引用的名字 = new 实现了接口(或继承了抽象类)的名字();

AbstractGuessGame是一个定义的抽象类,TextModeGame是继承AbstractGuessGame

AbstractGuessGame guessGame = new TextModeGame();
这是JAVA利用抽象类实现多态的典型实例啊

TextModeGame是继承AbstractGuessGame
假如还有T1,T2继承了AbstractGuessGame
你AbstractGuessGame guessGame时,就不用考虑具体是那一个类的实例,他可以是t1,t2的,只有当你具体实例化时才知道

你可以在参考一下设计模式的抽象类模式啊

我也不懂。下次来看