Implement field access for multiple layers class.
public class TestFieldClassBase
{
int instanceBase;
static float staticBase;
}
public class TestFieldClassDerived extends TestFieldClassBase
{
int instanceDerived;
static float staticDerived;
public static void main(String[] args)
{
testInstanceField();
testStaticField();
testInstanceFieldByBase();
testStaticFieldByBase();
}
private static void testStaticFieldByBase()
{
TestFieldClassDerived.staticDerived = 'D';
TestFieldClassBase.staticBase = 'B';
Asserter.assertTrue(TestFieldClassDerived.staticDerived == 'D', "testStaticFieldDerived");
Asserter.assertTrue(TestFieldClassBase.staticBase == 'B', "testStaticFieldBase");
}
private static void testInstanceFieldByBase()
{
TestFieldClassBase base = new TestFieldClassDerived();
base.instanceBase = 'B';
TestFieldClassDerived derived = (TestFieldClassDerived)base;
derived.instanceDerived = 'D';
Asserter.assertTrue(base.instanceBase == 'B', "testInstanceFieldBase");
Asserter.assertTrue(derived.instanceDerived == 'D', "testInstanceFieldDerived");
}
private static void testStaticField()
{
TestFieldClassDerived.staticDerived = 'D';
TestFieldClassDerived.staticBase = 'B';
Asserter.assertTrue(TestFieldClassDerived.staticDerived == 'D', "testStaticFieldDerived");
Asserter.assertTrue(TestFieldClassDerived.staticBase == 'B', "testStaticFieldBase");
}
private static void testInstanceField()
{
TestFieldClassDerived derived = new TestFieldClassDerived();
derived.instanceBase = 'B';
derived.instanceDerived = 'D';
Asserter.assertTrue(derived.instanceBase == 'B', "testInstanceFieldBase");
Asserter.assertTrue(derived.instanceDerived == 'D', "testInstanceFieldDerived");
}
}