肯定不会有冲突的,因为只有将变量声明在所有方法之外,才会被认为是对象的成员,你的程序 class A { void func( A a) { System.out.println(" func"); } } class B extends A { int a; public static void main(String[] args) { B b=new B(); A a=new A(); b.a=1; b.func(a); b.func(b); } } 中,int a 是声明在方法之外的,所以是类的对象成员,而A a=new A();的声明实在main()方法中,a属于方法的局部变量而且类型不同,所以说可以重复。但是把A a=new A();的声明放到方法以外就不行,或者在main()方法中再定义一个int a 也是不行的。
类b继承了类a ,子类继承父类的属性方法,同时还有自已特有的属性和方法这样子叫继承啊,这样子b类也有了方法func,当然可以执行啊!你要搞清继承的意思!
我同意你的说法,但是不太明白既然已经定义了int型变量a,为什么在A类实例化的时候还可以用a做为名称,标识不会发生冲突吗? lqtflwg718(九五之尊) :
你要那么多分干嘛有什么用处 ?
class A
{
void func( A a)
{
System.out.println(" func");
}
}
class B extends A
{
int a;
public static void main(String[] args)
{
B b=new B();
A a=new A();
b.a=1;
b.func(a);
b.func(b);
}
}
中,int a 是声明在方法之外的,所以是类的对象成员,而A a=new A();的声明实在main()方法中,a属于方法的局部变量而且类型不同,所以说可以重复。但是把A a=new A();的声明放到方法以外就不行,或者在main()方法中再定义一个int a 也是不行的。