ts 怎么在父类调用子类的方法

如题所述

Object(protectd 方法在此类里),Person1 (默认继承Object), CloneDemo(用于测试)。
你想在测试类里用Person1的对象p1,去调用其应继承的父类的clone()方法,因为Object和Person1 不在一个包里 ,所以编译出错。假设Object 和Person1在相同的包里,这是没问题的。

下面的程序,只涉及到两个类,Test 和Testson,你在Testson里调用其父类的protected 方法没有问题。这是正常的。 现在你再加一个类,把Testson稍微改一下,再试一下,就会出现上面的问题了。
给你代码试试:

Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* file name is:Test.java
*/
package t0;

public class Test
{
int a=1;
int b=1;

void say()
{
System.out.println("hello");
}

protected void result()
{
System.out.println(a+b);
}
}

Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* filename is TestProtected.java
*/
package t1;

import t0.Test;

class Testson extends Test
{
int c=0;

void display()
{
result(); //不同包子类直接可见。
}
}

public class TestProtected
{
public static void main(String[] args)
{
Testson ts=new Testson();
ts.display();
//ts.result(); //编译报错.
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-27
Object(protectd 方法在此类里),Person1 (默认继承Object), CloneDemo(用于测试)。
你想在测试类里用Person1的对象p1,去调用其应继承的父类的clone()方法,因为Object和Person1 不在一个包里 ,所以编译出错。假设Object 和Person1在相同的包里,这是没问题的。

下面的程序,只涉及到两个类,Test 和Testson,你在Testson里调用其父类的protected 方法没有问题。这是正常的。 现在你再加一个类,把Testson稍微改一下,再试一下,就会出现上面的问题了。
给你代码试试:

Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* file name is:Test.java
*/
package t0;

public class Test
{
int a=1;
int b=1;

void say()
{
System.out.println("hello");
}

protected void result()
{
System.out.println(a+b);
}
}

Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* filename is TestProtected.java
*/
package t1;

import t0.Test;

class Testson extends Test
{
int c=0;

void display()
{
result(); //不同包子类直接可见。
}
}

public class TestProtected
{
public static void main(String[] args)
{
Testson ts=new Testson();
ts.display();
//ts.result(); //编译报错.
}
}
相似回答