Java jvm 虚拟机 子类调用父类,祖类方法

原创 2018年04月17日 17:00:27
public class TestGrandFather {

	class GrandFather{
		public void thinking(){
			System.out.println("i am grandfather");
		}
	}
	
	class Father extends GrandFather{
		public void thinking(){
			System.out.println("i am father");
		}
	}
	
	class Son extends Father{
		public void thinking(){
			try {
				//1.7
//				MethodType mt = MethodType.methodType(void.class);
//				MethodHandle mh = MethodHandles.lookup().findSpecial(GrandFather.class, "thinking", mt, getClass());
//				mh.invoke(this);
				
				//1.8
				MethodType mt = MethodType.methodType(void.class);
				Field IMPL_LOOKUP = MethodHandles.Lookup.class.getDeclaredField("IMPL_LOOKUP");
				IMPL_LOOKUP.setAccessible(true);
				MethodHandles.Lookup lkp = (MethodHandles.Lookup)IMPL_LOOKUP.get(null);
				MethodHandle h1 = lkp.findSpecial(GrandFather.class, "thinking", mt, GrandFather.class);
				h1.invoke(this);
			} catch (Exception e) {
				e.printStackTrace();
			} catch (Throwable e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		(new TestGrandFather().new Son()).thinking();
	}
}

java调用祖父类里被父类重写了的实例方法

java.lang.invoke 包主要用于动态确定目标方法 在java语言中无法把函数作为一种参数进行传递,C++里有函数指针,C#里有相似的delegate、event类型。在java里普遍的做...
  • qq_34332010
  • qq_34332010
  • 2017-07-31 16:44:33
  • 490

访问祖先类的虚方法

访问祖先类的虚方法问题提出       在子类覆盖的虚方法中,可以用inherited调用父类的实现,但有时候我们并不需要父类的实现,而是想跃过父类直接调用祖先类的方法。举个例子,假设有三个类,实现如...
  • linzhengqun
  • linzhengqun
  • 2007-08-23 10:17:00
  • 2444

Java 中父类怎么调用子类的方法?

Java中父类可以调用子类方法吗?
  • qq_25827845
  • qq_25827845
  • 2016-10-24 22:41:38
  • 21152

【java】Java 中父类怎么调用子类的方法?

原文地址:http://blog.csdn.net/qq_25827845/article/details/52916513 父类能调用子类的方法吗? 答:能。   怎么做...
  • lzm18064126848
  • lzm18064126848
  • 2016-12-21 22:34:07
  • 2301

java中子类static方法隐藏父类static方法

父类 public class TestA { public static int a=0; public int b=0; public static int c=0; ...
  • u011617742
  • u011617742
  • 2017-04-09 17:41:14
  • 967

子父类方法调用关系,内部类总结

public class Privateoverride { private void f() { System.out.println("private f()"); } public s...
  • cdestiny
  • cdestiny
  • 2012-08-15 23:28:21
  • 1511

父类中的private方法会被子类继承吗????可以访问吗????

肯定是被继承的 但是 子类无法访问父类的私有属性或方法。。。。
  • qq_39632912
  • qq_39632912
  • 2018-01-09 23:58:50
  • 64

从JVM角度看为什么子类不能重写父类静态方法

我们要解释的是什么问题呢?public class A extends B{ public static void f() { System.out.println("com....
  • TyroneRenekton
  • TyroneRenekton
  • 2017-03-31 11:51:36
  • 1105

java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)

众所周知,java中this关键字指的是当前调用对象,一般使用方法不在此阐述public class HelloA { public static void main(String[] arg...
  • u010644448
  • u010644448
  • 2016-07-05 14:16:11
  • 2336

Java父类对象调用子类实体:方法重写与动态调用

众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例...
  • u011579908
  • u011579908
  • 2017-04-01 13:37:50
  • 1473
收藏助手
不良信息举报
您举报文章:Java jvm 虚拟机 子类调用父类,祖类方法
举报原因:
原因补充:

(最多只允许输入30个字)