class A
{
void fn1()
{
}
}abstract class B
{
abstract void fn2();
}class C extends A
{
B getB()
{
return new B()
{
public void fn2()
{
}
};
}
}class Shu
{
static void method1(A a)
{
a.fn1();
}
static void method2(B b)
{
b.fn2();
}
public static void main(String[] args)
{
C c=new C();
method1(c);
method2(c.getB());
}
}
上边这个例子我基本都理解继承啊,抽象类啊,还有B getB()方法里的匿名类,我都明白,问题是我咋就不明白main方里里的method1(c),这给穿过去的是一个类吗? 然后返回一个类的实例?是这样的吗?我不太确定,请大师帮我解决疑问请用通俗的话语解释,在帮我拓展点知识那就最好了(PS:拒绝老鸭回答,老鸭请认真看书,早日找到工作)!!!!!!!!!
祝福老鸭学业有成!
{
void fn1()
{
}
}abstract class B
{
abstract void fn2();
}class C extends A
{
B getB()
{
return new B()
{
public void fn2()
{
}
};
}
}class Shu
{
static void method1(A a)
{
a.fn1();
}
static void method2(B b)
{
b.fn2();
}
public static void main(String[] args)
{
C c=new C();
method1(c);
method2(c.getB());
}
}
上边这个例子我基本都理解继承啊,抽象类啊,还有B getB()方法里的匿名类,我都明白,问题是我咋就不明白main方里里的method1(c),这给穿过去的是一个类吗? 然后返回一个类的实例?是这样的吗?我不太确定,请大师帮我解决疑问请用通俗的话语解释,在帮我拓展点知识那就最好了(PS:拒绝老鸭回答,老鸭请认真看书,早日找到工作)!!!!!!!!!
祝福老鸭学业有成!
static void method1(A a)
{
a.fn1();
}
c向上转型为类A的对象(因为C是A的子类),执行类A中的方法
void fn1()
{
}
{
C c=new C();//这里创建了类C的一个对象 c是一个对象
//传进去一个对象
method1(c);
method2(c.getB());
}
class C extends A
类C继承A C instanceof A 这里将C传进去 思想中穿插着多态 你看看多态的 没有返回类的实例只是 一个类的对象调用了这个对象的方法
static void method1(A a) //这是方法名部分
{
a.fn1(); //俩{} 括起来的就是方法体
}
方法名部分就包括了这些内容: 访问权限 + [修饰符] + 返回类型 + 方法名 + (方法的参数)
访问权限就包括了public private protect 以及default(也就是啥也不写的时候)
修饰符:final,static,sysnchorized,native,....
返回类型:void (啥也不返回) ,基本数据类型(8个),引用类型(也就是类)
方法的参数列表:可以为空(啥也不传进去),也可以是基本数据类型或者引用类型,在定义参数列表的时候要指明参数的类型和参数的名字,只有包括了这两样它才能识别,传进去后就交给了方法体内部处理了。
处理有结果要返回就返回一个结果给方法体外的接收者,如果没有需要返回的就啥也不返回。在本例你定义的方法中,你定义的参数为(A a) 也就是类型为A 名字为a的一个参数。传入到方法体后叫a执行了fn1()的方法,仅此而已.因为你定义的该方法为void ,也就是啥也不返回。也没有需要返回的。所以在正在使用该方法时也只需要传入一个按它规定的A类型的实参就可以了。
正如你的代码: C c=new C();
method1(c);