当前位置: 代码迷 >> J2SE >> 细细讲解下啊越细越好,举例子说明就更好了,该如何处理
  详细解决方案

细细讲解下啊越细越好,举例子说明就更好了,该如何处理

热度:126   发布时间:2016-04-24 01:28:09.0
细细讲解下啊,越细越好,举例子说明就更好了
class A{
public void f(int x){
System.out.println(x);
}
public void s(D d){
System.out.println("哈哈");
}
}
class D{

}
class B extends A{
public B(int y,D d){
f(y);
s(d);
}
}
class C{
public static void main(String[] args){
B b = new B(2,new D());
}
}
为什么B的构造方法可以直接把形参传给f和s方法啊,为啥不用this.的形式,如果B类的构造方法的形参是一个类对象,如果接住这个传过来的对象啊,也就是说一个方法的形参是数值型的时候可以用this.的形式接住传过来的数,那如果形参是类对象或者是引用数据类型的呢?怎么接住啊

------解决方案--------------------
1.为什么B的构造方法可以直接把形参传给f和s方法啊
B的构造函数里面声明了变量y,这个是局部变量D d是定义了个d对象 生命周期在花括号内 自然能用了啊
this. 的方法来调用类的成员变量这个this是指当前类创建的实例对象,即B的实例对象,B对象的成员变量没有y 
和d自然不能用 即使有意义也不对啊

2.在JAVA中有值传递和引用 对象都是引用的 你可以理解为指针 是访问地址的 值传递 会创建个副本 有额外的开销
------解决方案--------------------
Java code
class A {    protected D dd;    public void f(int x) {        System.out.println(x);    }    public void s(D d) {        System.out.println("哈哈");    }}class D {}class B extends A {        private int yy;    public B(int y, D d) {        super.dd =d;//想怎么写就怎么写。this.dd=d也可以。父类方法必须protected以上,刚才我试验了,否则用用getset了        this.yy = y;        this.f(y);//this.f(yy);        this.s(d);//this.s(dd);    }}public class C {    public static void main(String[] args) {        new B(2, new D());    }}
  相关解决方案