为什么java代码都要这么写?定义一个父类的对象 让子类去实现
比如Mapm=newHashMap();为什么不直接写HashMapm=newHashMap();上面内个有什么好的...
比如Map m=new HashMap();
为什么不直接写HashMap m=new HashMap();
上面内个有什么好的 展开
为什么不直接写HashMap m=new HashMap();
上面内个有什么好的 展开
8个回答
展开全部
组织了半天好像还是说不清楚,水平有限,将就看看吧。。。
简单来说,就是节省代码,不管子类继承父类,还是子类实现接口,都可以节省下大量的代码。
工厂模式就是个很好的例子,如果我们不选择使用接口,就需要给每个类都写好实例化语句,因为我们不知道使用时到底会实例化那个类,类的数量如果比较大,这些实例化语句就会非常繁琐,而且扩展起来也更麻烦,这就象是各自类开起了各自的小作坊,想要扩展就需要在客户端建立新的小作坊。
如果使用工厂模式的话,只需要建立一个工厂类,实例化需要的类返回,客户端只由一个实例化接口进行接收,代码更少,条理更清晰,想要进行扩展,只需要在工厂中添加一条流水线,只要添加的类符合接口规格,客户端实例化的接口就不需要改动,直接可以接收。
简单来说,就是节省代码,不管子类继承父类,还是子类实现接口,都可以节省下大量的代码。
工厂模式就是个很好的例子,如果我们不选择使用接口,就需要给每个类都写好实例化语句,因为我们不知道使用时到底会实例化那个类,类的数量如果比较大,这些实例化语句就会非常繁琐,而且扩展起来也更麻烦,这就象是各自类开起了各自的小作坊,想要扩展就需要在客户端建立新的小作坊。
如果使用工厂模式的话,只需要建立一个工厂类,实例化需要的类返回,客户端只由一个实例化接口进行接收,代码更少,条理更清晰,想要进行扩展,只需要在工厂中添加一条流水线,只要添加的类符合接口规格,客户端实例化的接口就不需要改动,直接可以接收。
展开全部
这个涉及到了java的多态和向上转型。
当一个父类引用指向子类对象时就是继承间的多态,子类对象自动向上转型了。
好处就是当你一个方法接受参数是父类对象时可以接受子类对象然后向下转型成子类对象。
这样也体现了多态性,你可以传入的可能是不同的子类对象作为参数。
如果满意,请采纳,谢谢。
当一个父类引用指向子类对象时就是继承间的多态,子类对象自动向上转型了。
好处就是当你一个方法接受参数是父类对象时可以接受子类对象然后向下转型成子类对象。
这样也体现了多态性,你可以传入的可能是不同的子类对象作为参数。
如果满意,请采纳,谢谢。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面是一个Map类型的引用m,指向一个HashMap对象,
下面是一个HashMap类型的引用m,指向一个HashMap对象,
因为Map有多个子类
也就是说,引用m还可以指向其他的引用,
这是多态的好处,如果仅仅是对这里这两句话,是区别不大的,但是在一个大的系统,代码两大的话,区别就明显了
下面是一个HashMap类型的引用m,指向一个HashMap对象,
因为Map有多个子类
也就是说,引用m还可以指向其他的引用,
这是多态的好处,如果仅仅是对这里这两句话,是区别不大的,但是在一个大的系统,代码两大的话,区别就明显了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
查Java的API文档:Map是一个接口,Java语言中不能实例化接口的对象,只能用实现了接口的子类(这里指的是子类,只是“类”,不是接口)去实例化父接口的对象,明白了吗?
这是Java的面向对象方面的知识,好好查查资料看看吧!
这是Java的面向对象方面的知识,好好查查资料看看吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这就是面向接口编程的好处,就像你定义了一个Animal,可能有多种动物,在需要动物的地方我们都用Animal表示,具体是什么Animal就交个调用的人,再简单点,用接口做参数,只要是实现该接口的实例都可以作为参数值,这样就避免重复的代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询