十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
function是面向过程程序设计中的叫法。
创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为佛坪企业提供专业的成都网站制作、成都做网站,佛坪网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
java是纯面向对象程序设计语言,一个类对属性和方法进行了封装
所以在java中叫method。这种说法比较贴切
method是通过java的反射机制获取一个类的方法,会返回一个Method类
Foible 朋友的说法不对。
B b=new B(); 这种方式,实际上是实例化了子类的对象,注意:内存中还是子类对象。
((A)b).m(); 表面上看起来是父类对象了,但是由于内存中是子类对象,所以调用的还是子类方法。
A b=new B();
b.m();
这种方法和你写的实际是一个效果,虽然上溯造型到了父类,由于子类重写了父类的方法,调用的还是子类的方法(也就是所:方法的实现,最后是在子类中实现的)。
所以,总结如下:
如果子类没有重写父类的方法,调用父类的方法的时候,实际上是去父类的内存中实现,可以调用父类方法。
如果子类重写了父类的方法,那么,你虽然上溯造型到了父类,由于内存还是子类,该方法的实现还是在子类,所以用实例化的对象是调用不到父类的,这种情况下,只能用super关键字。
用static的情况不讨论的情况下不讨论是这样的,不知道到您是否不满意,不满意的话可以发消息继续讨论。
java Method类是最终类,不能继承,使用方式如下:
/**
*/
package com.timer.demo.objectsocket;
import java.lang.reflect.Method;
/**
* @author 崔冉
*
*/
public class InvokeTester {
public int add(int param1, int param2) {
return param1 + param2;
}
public String echo(String mesg) {
return "echo" + mesg;
}
public static void main(String[] args) throws Exception {
Class classType = InvokeTester.class;
Object invokertester = classType.newInstance();
Method addMethod = classType.getMethod("add", new Class[] { int.class,
int.class });
//Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,
//如果参数为基本类型数据,必须转换为相应的包装类型的对象。invoke()方法的返回值总是对象,
//如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,
//再将其返回
Object result = addMethod.invoke(invokertester, new Object[] {
new Integer(100), new Integer(200) });
//在jdk5.0中有了装箱 拆箱机制 new Integer(100)可以用100来代替,系统会自动在int 和integer之间转换
System.out.println(result);
Method echoMethod = classType.getMethod("echo",
new Class[] { String.class });
result = echoMethod.invoke(invokertester, new Object[] { "hello"});
System.out.println(result);
}
}