Java中的继承

本文介绍了Java中面向对象的继承特性,包括子类如何继承父类的变量和方法,以及方法的重写。通过继承,可以减少代码冗余,提高编程效率。同时,文章提到了Java不支持多重继承,子类可以通过方法重写调整从父类继承的方法行为,并讨论了如何在子类中处理父类的私有成员。

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

1.简介

    面向对象语言中的三大特性:继承、封装、多态。继承作为三大特性之一,可以降低代码编写的冗余度,提高编程的效率。通过继承,子类获得了父类的成员变量和方法。然而一个子类如何继承父类的变量和方法,如何修改从父类继承过来的子类方法呢?

    为什么要使用继承? 我理解的是不同的类之间可能会存在重复相似的属性或是方法,如果编写完一个类中的属性或是方法,而另一个类中也需要这些属性和方法难免需要重新写一遍,一个是太过于麻烦,而且代码的冗余率会很高,而继承就是解决这个问题的。不需要重新编写,只需加上继承的关系,就可以调用父类中的方法。实现代码的重用,提高程序的可维护性,节省大量创建新类的时间,提高开发效率和开发质量。

2.结构

class father{
//父类的变量和方法

}
class son extends father{
//子类的方法和变量

}

 子类调用父类的方法时:

class Parent{//父类
    int ret = 0;
    public int testRet(int n){
        System.out.println(n);
        return  n;
    }
}
class Son extends Parent{//子类

}
public class Main1 {
    public static void main(String[] args){
        Son son = new Son();
        son.testRet(son.ret);//子类调用父类的方法和参数
    }

}

最后输出的结果就是 0。

3. 使用继承注意的点

a.Java 不支持多重继承,子类只能继承一个父类,但是一个父类可以有多个子类。

b.父类中的构造方法不能被子类继承,但是可以被子类调用,在子类创建的时候,父类的构造函数就会被调用。

c.可以在子类中编写一个父类当中具有相同名的新实例方法,这称为“方法重写”。

d.子类中可以创建父类中没有的方法和变量。

4.方法的重写

    当一个子类中的一个方法具有与其父类中的一个实例方法相同的名称、参数个数和类型和返回值时,称子类中的方法“重写”了父类的方法。例如:

public class Main1 {
    public static void main(String[] args) {
        Son son = new Son();
        son.testExt2();//调用父类的方法
        son.testExt1();//调用的是自己重写的方法
    }

}

class Parent{
    public void testExt1(){
        System.out.println("快去写作业!");
    }
    public void testExt2(){
        System.out.println("写完吃好吃的。");
    }
}
class Son extends Parent{
    public void testExt1(){//方法的重写
        System.out.println("不想写作业!");
    }
}

返回的结果是:

 5. 父类与子类权限问题

    子类继承其父类的所有public和protected成员,但不能继承其父类的private成员。那么如何在子类中访问到父类中的私有字段呢?我们可以在父类中提供用来访问其私有字段的public或protected方法,子类使用这些方法来访问父类中的private成员。比如:

public class Main1 {
    public static void main(String[] args) {
        Son son = new Son();
        System.out.println(son.testExt1());//调用父类的函数,返回其私有成员变量
    }

}

class Parent{
    private int val = 8;
    public int testExt1(){
        return val;
    }
}
class Son extends Parent{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值