子类对象强转父类时能否调用父类方法?

子类对象强转父类时能否调用父类方法?

package jp;

public class Father {

	private void money(){
		System.out.println("i have money");
	};
	public void moneyopen(){
		System.out.println("i have a lot of money");
	};

}

先定义一个Father类,里面定义俩个不同权限的方法。
package jp;

public class Son extends Father{

	private void play(){
		System.out.println("i can play");
	};

	public void playopen()
	{
		System.out.println("我也能玩");
	};
}

然后在定义一个子类继承父类,同上,下面来看结果。

可以看到,当son转成father,结果fa只能调用father的public方法。
反过来把father转成son,son1可以调用father和son的public方法,Son和father的private方法也不可以用。

楼主是刚刚学习java的菜鸟,如果还有什么不足的地方,可以在留言板留言一起讨论。希望这个帖子能对刚学习的朋友有点帮助。
在这里

在将子类对象强制转换父类对象后,我们只能调用父类中定义的员变量和方法,而无法直接调用子类独有的员变量和方法。但是,如果我们确定该父类对象实际上是一个子类对象,我们可以将父类对象再次强制转换子类对象,从而访问子类独有的员变量和方法。示例如下: ```java public class Animal { public void eat() { System.out.println("Animal is eating"); } } public class Dog extends Animal { private int age; public Dog(int age) { this.age = age; } @Override public void eat() { System.out.println("Dog is eating"); } public void bark() { System.out.println("Dog is barking"); } public int getAge() { return age; } } public class Main { public static void main(String[] args) { Animal animal = new Dog(3); animal.eat(); // 输出 "Dog is eating" Dog dog = (Dog) animal; dog.bark(); // 输出 "Dog is barking" System.out.println("Dog's age is " + dog.getAge()); // 输出 "Dog's age is 3" } } ``` 在这个例中,我们创建了一个Dog类型的对象dog,并将它强制转换为Animal类型的变量animal。由于Dog是Animal的子类,因此可以将Dog类型的对象赋值给Animal类型的变量。此,我们只能调用Animal类中的方法,也可以调用Dog类中继承自Animal类的方法,但无法直接调用Dog类中独有的员变量和方法。 接下来,我们将animal对象再次强制转换为Dog类型的变量dog,这样就可以访问Dog类中独有的员变量和方法了。这里需要注意的是,在将父类对象强制转换子类对象之前,需要确保该父类对象实际上是一个子类对象,否则可能会引发ClassCastException异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值