日期:2014-05-20  浏览次数:20740 次

我是初学java的 发个代码问下,别喷我好么。
我就发点我不懂的地方
get和set我就不复制了麻烦大家知道就好了
Java code

//这是父类
public abstract class Drink {
    private String name;
    private String taste;
    
    public Drink(){
        
    }
    
    public Drink(String name, String taste){
        this.name=name;
        this.taste=taste;
    }
    
    public abstract void drink();
      



Java code

//这是子类继承父类的代码
public class Beer extends Drink {

    
    public void drink() {
        System.out.println("名称:" + this.getName() + "\n口感:" + this.getTaste()
                + "\n冰镇饮用口感最好");
    }

}

Java code

//测试类
public class DrinkTest {

    
    public static void main(String[] args) {
        
        Coffee pl = new Coffee();
        pl.setName("曼特宁咖啡");
        pl.setTaste("醇厚偏苦");
        pl.drink();
       }
}



这样修改了一下 
我把子类添加了2个构造方法一个是没有参数的一个有2个参数的。
在测试类new的时候我就直接传了2个参数
Coffee p1 = new Coffee("曼特宁咖啡","醇厚偏苦");
p1.drink();

运行出来的是一样的。 

这有什么区别么?和上面的有什么不同 不好之分么?



------解决方案--------------------
说没区别是不是太绝对了?效果一样就行了。。。
Coffee p1 = new Coffee("曼特宁咖啡","醇厚偏苦");//这种是在构造方法中对成员变量进行初始化。
Coffee pl = new Coffee();//先构造一个Coffee实例,name,taste 取默认值null;然后调用set方法赋值。
pl.setName("曼特宁咖啡");
pl.setTaste("醇厚偏苦");
其实,你现在接触的本来就不多,还考虑什么区别,只要功能实现,你成功了一小步了。。等接触多了,这些疑问自行解决,都算不算疑问。

 
------解决方案--------------------
当然还有误区,就是假如我说那种好,然后你写代码一直用那种,这种情况还不糟糕,因为毕竟对的代码没什么影响。要是遇到比较特殊的情况,就不知道怎么变通了。所以区别有,好坏之分。。。尽量不要这么想。学习的时候能多用不同的表现形式是有好处的,到了工作是用你最顺手的就可以了吧。
------解决方案--------------------
个人认为其实就是方便和不方便的问题
------解决方案--------------------
你这个Coffee 也是继承Drink的吧。。看你上面的代码都没交代…
这两种方法基本没啥区别吧,一个是初始化时候设置数据,一个是对象初始化后再set数据。

现在新手只要能实现功能就好,纠结于这种问题没什么意思,浪费精力。等学的多了自然会明白吧
------解决方案--------------------
探讨
说没区别是不是太绝对了?效果一样就行了。。。
Coffee p1 = new Coffee("曼特宁咖啡","醇厚偏苦");//这种是在构造方法中对成员变量进行初始化。
Coffee pl = new Coffee();//先构造一个Coffee实例,name,taste 取默认值null;然后调用set方法赋值。
pl.setName("曼特宁咖啡");
pl.setTaste("醇厚偏……

------解决方案--------------------
擦,明显是想引用2l的