比如interface A{
void test();
}
class B implements A{
public void test(){
System.out.println("a");
}
}
public class Test{
public static void main(String[] args){
A a = new B();
B b = new B();
//B实现了A,功能应该大于等于A,用第二种实现不是更好吗,为什么要用第一种写法呢,好处在哪里 //经常看到以下写法,好处在哪里,请教各位大侠。
List l = new ArrayList();
}
}
void test();
}
class B implements A{
public void test(){
System.out.println("a");
}
}
public class Test{
public static void main(String[] args){
A a = new B();
B b = new B();
//B实现了A,功能应该大于等于A,用第二种实现不是更好吗,为什么要用第一种写法呢,好处在哪里 //经常看到以下写法,好处在哪里,请教各位大侠。
List l = new ArrayList();
}
}
2. 用接口作为变量定义的话,还可以防止程序员使用非标准的方法。
比如说:C类也实现A接口方法test(); 相当于B类与C类都重写了test();方法,但是B类有B类的实现功能,C类有C类的实现功能,实现的作用不同。
再比如:B类test()方法打印“B”语句,C类test()方法打印“C”语句。 A a = new B(); a.test();就直接调用打印“B”语句的方法,万一你不需要打印“B”语句的功能,想实现打印“C”语句的功能,那你直接把 A a = new B(); 中的B换成C不就行了吗,其他的什么也不需要改。
2、再说B实现了A,功能不一定大于A,看你怎么做了,你要把B类的方法都写到接口里,B再实现呢?!
3、 再说说List接口 List已知实现类有好多个,你可以参考API文档,不同的结构不同的功能。
举个例子: List l = new ArrayList(); 与 List l = new LinkedList(); 这样写都是调用重写List的方法,ArrayList数组结构查询比较快,
LinkedList 链表结构插入删除较快,在项目中刚开始感觉 List l = new ArrayList();这样写比较好,到后来感觉插入删除比较多,用
LinkedList 比较好,那你直接替换就行了,其他的代码不用动。纯属个人理解,如有不正确请指出。
你这样说我貌似懂一点,我在课本上看过这样写多态的好处。
你所说的第二点,把B的方法都写到A接口中,B再对其实现,然后B类还可以有自己其他的一些功能方法,难道不是会大于等于A中的功能吗?我自己的理解哈,我初学,还不是特别懂。还有第三点,就是方便以后代码的修改,还有其他的好处不,谢谢回答!
如果你一开始就在电脑中用英伟达显卡类表示显卡,那如果别人想赋值AMD卡就用不了!还有接口比类继承好处是你可以实现多个接口,如手机实现了MP3接口和MP4接口!
而你只能继承一个父类,手机只能集成上代手机!
比如:刚开始 List l = new LinkedList();
最后我想修改为下面的写法,只需要改动这里即可,对代码产生的影响小,是这个意思吗
List l = new ArrayLIst();java编程思想我看过一点点,好难懂啊,我才刚开始学习,还有太多不懂得地方,希望多赐教,谢啦。
你这样说我貌似懂一点,我在课本上看过这样写多态的好处。
你所说的第二点,把B的方法都写到A接口中,B再对其实现,然后B类还可以有自己其他的一些功能方法,难道不是会大于等于A中的功能吗?我自己的理解哈,我初学,还不是特别懂。还有第三点,就是方便以后代码的修改,还有其他的好处不,谢谢回答!第二点我是说B类所有、全部的方法都写到A接口里面当然B也可以有自己的方法不写在接口里面,不要纠结这个问题.....
了解多态的好处,就了解这样写的好处,java里面好多地方都存在多态,所以多态也是java的重点,多多学习,我也是菜鸟一个,我理解的也就这些了