继承与转型

本文详细解析了Java中继承的概念,包括成员变量和方法的访问级别(public, protected, default, private),以及子类如何继承父类的方法和变量,并演示了同名方法的覆盖。此外,还介绍了向上转型和向下转型的具体应用场景及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public >protected>default>private

关于继承:

子类可以继承父类所有非私有成员变量和非私有成员方法,同名就覆盖。

 父类的构造函数可以被继承但不能被覆盖(相当于final),子类先调用父类构造函数,再调用自己的构造函数

class Father{
String name = "father";
public void play(){
System.out.println("i am playing cards");
}

}


class Son extends Father{
}
public class Test {
public static void main(String[] args) {
Son s = new Son();
s.play();
System.out.println(s.name);
}
}

the output is:
i am playing cards
father

class Father{
String name = "father";
public void play(){
System.out.println("i am playing cards");

}


}
class Son extends Father{
String name = "son";
public void play(){
System.out.println("i am playing toys");

}


}
public class Test {
public static void main(String[] args) {
Son s = new Son();
s.play();
System.out.println(s.name);
}

}


the output is:
i am playing toys
son



讲转型:
转型分为向上转型和向下转型。
向上转型就是将子类的对象赋给父类引用。
向下转型就是将父类对象赋给子类引用,但是向下转型必须先向上转才能向下转
//向上转
class Father{
String name = "father";
public void play(){
System.out.println("i am playing cards");

}


}
class Son extends Father{
String name = "son";
public void play(){
System.out.println("i am playing toys");

}


}
public class Test {
public static void main(String[] args) {
Father f = new Son();//向上转
f.play();
System.out.println(f.name);
}
}

the output is:
i am playing toys
father

//向下
class Father{
String name = "father";
public void play(){
System.out.println("i am playing cards");

}


}
class Son extends Father{
String name = "son";
public void play(){
System.out.println("i am playing toys");

}


}
public class Test {
public static void main(String[] args) {
Father f = new Son();//先向上
Son s = (Son) f;//再向下
s.play();
System.out.println(s.name);
}
}

the out put is:
i am playing toys
son

注意:不可以直接向下,虽然编译没有错,但是一运行就会报错

不想深刻理解就记住两句话:

1调用的成员变量和能够调用的方法由引用类型决定Father f = new Son();这里面的Father就是引用类型
2调用哪个里面的方法由对象决定

向上转型和向下转型的优缺点:
向上转具有灵活性,可以在需要替换的时候改为其他子类,但是呢,它会遗失掉子类独有的方法。假如上述例子中son还有一个cry方法,调用时候就会不通过。
向下转的优缺点就反上啦~







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值