这两个东西,一直都很迷惑人,abstract class,
1,通过创建子类对象可以生成一个抽象类引用
2,通过一个生成实例的方法,如:getIstance()方法,
Graphics,它似乎不用创建实例对象,而方法也不是static的,居然直接就调用了?不明白。
interface创建实例对象似乎也是不明白怎么搞的,
哪位大虾解释一下。
1,通过创建子类对象可以生成一个抽象类引用
2,通过一个生成实例的方法,如:getIstance()方法,
Graphics,它似乎不用创建实例对象,而方法也不是static的,居然直接就调用了?不明白。
interface创建实例对象似乎也是不明白怎么搞的,
哪位大虾解释一下。
但是抽象类不能被直接实例化(不能之间创建对象。)
必须通过继承才能实现。(JAVA单一继承)
接口,也有自己的方法,但是方法没有实现的内容。通过接口,
在新类中重新写方法的实现方法,,同时接口实现了多重继承的问题。
1,通过创建子类对象可以生成一个抽象类引用 --只是向上转型而已
2,通过一个生成实例的方法,如:getIstance()方法,--factory模式
interface创建实例对象似乎也是不明白怎么搞的,-- interface一般只作型别即使是类似于List list = new XXXList();也只是面向接口编程中的,向上转型而已
getInstance一般是单例模式,或者工厂模式里用到,你可以去查看相关模式的资料就明白了,单例里的话肯定是static的,工厂模式里,则有可能是一个工厂类的实例的非静态方法
这个里面啊,Container类是抽象类,后来我们要用cp的话,似乎是直接用的,比如cp.add()。这里的cp它是个引用,但是它指向的到底是个什么对象呢,还是个子类对象(向下转型)?谁能解释一下?
也只是面向接口编程中的,向上转型而已。
可否将这句话讲明白点,为什么接口创建的引用。用法一样呢?
假如上面换成:ArrayList list = new ArrayList();list.add(new Integer(5));
有何不同?
面向接口编程的好处是,在对具体实现做了更改以后,接口保持不变,这样,便于使用和维护。比如,List list = new ArrayList();
强迫你只能使用List接口中的方法,这样,以后如果你想用其它List,比如LinkedList,那么你只需要把这一句改成List list = new LinkedList(); 而程序的其于部分均可保持不变。因为你只用了List接口中的方法。
就说:List list = new ArrayList();然后list这个引用在eclipse下的方法就只有List里的方法,而ArrayList中的方法则没有,面向接口确实是很好的。子类和父类(抽象类)似乎也可以,当然我不是要问抽象类和接口的区别,刚才主要是想说,这个里面的实例化是怎么搞的,现在也搞清楚了,最后谢谢大家。