Java--继承

JAVA基础(十一) 向下转型,instanceof,Object类介绍,==与equals,toStirng(),JUnit,包装类 阅读详情

1.继承

在继承的关系中,子类就是一个父类。也就是说,子类可以被当做父类看待。

例如父类是员工,子类是讲师,那么讲师就是一个员工。关系:is-a。

定义父类的格式:

public class 父类名称 {

     //...

}

定义子类的格式:

public class 子类名称 extends 父类名称 {

    //...

} 

//定义一个父类:员工
public class Employee {

    public void method(){
        System.out.println("方法执行了");
    }
}
// 定义了一个员工的子类:讲师
public class Teacher extends Employee {
}
//定义了员工的另一个子类:助教
public class Assistant extends Employee {
}
public class Demo01Extends {
    public static void main(String[] args) {
        //创建了一个子类对象
        Teacher teacher = new Teacher();
        // Teacher类当中虽然什么都没写,但是会继承来自父类的method方法。
        teacher.method();

        //创建另一个子类助教对象
        Assistant assistant = new Assistant();
        assistant.method();
    }
}

2.继承中成员变量的访问特点

在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问规则:

(1)直接通过子类对象访问成员变量

等号左边是谁,就优先用谁,没有则向上找。

(2)间接通过成员方法访问成员变量

该方法属于谁,就优先用谁,没有则向上找。

public class Fu {
    int numFu = 10;
    int num =100;
    public void methodFu(){
        // 使用的是本类当中的,不会向下找子类的。
        System.out.println(num);
    }
}
public class Zi extends Fu {
    int numZi = 20;
    int num = 200;
    public void methodZi(){
        //因为本类当中有num,所以这里用的是本类的num
        System.out.println(num);
    }
}
public class Demo01ExtendsField {

    public static void main(String[] args) {
        Fu fu = new Fu();//创建父类对象
        System.out.println(fu.numFu);//只能使用父类的东西,没有任何子类的内容。
        System.out.println("==============");

        Zi zi = new Zi();
        System.out.println(zi.numFu);//10
        System.out.println(zi.numZi);//20
        System.out.println("==============");

        //等号左边是谁,就优先用谁
        System.out.println(zi.num);//优先子类:200
        System.out.println("==============");

        //这个方法是子类的,优先用子类的,如果没有再向上找。
        zi.methodZi();//200
        //这个方法是在父类当中定义的
        zi.methodFu();//100
    }
}

3.区分子类方法中重名的三种变量

局部变量: 直接写成员变量名

本类的成员变量: this.成员变量名

父类的成员变量: super.成员变量名

//定义父类
public class Fu {
    int num = 10;
}
//定义子类
public class Zi extends Fu {

    int num = 20;
    public void method(){
        int num = 30;
        System.out.println(num);//30 局部变量
        System.out.println(this.num);// 20 本类的成员变量
        System.out.println(super.num);//10 父类的成员变量
    }
}
public class Demo01ExtendsField {
    public static void main(String[] args) {
        Zi zi = new Zi();

        zi.method();
    }
}

4.继承中成员方法的访问特点

在父子类的继承关系当中,创建子类对象,访问成员方法的规则。

创建的对象是谁,就优先用谁,如果没有则向上找。

//创建父类
public class Fu {

    public void methodFu(){
        System.out.println("父类方法执行");
    }
    public void method(){
        System.out.println("父类重名方法执行!");
    }
}
//子类继承父类
public class Zi extends Fu {

    public void methodZi(){
        System.out.println("子类方法执行!");
    }

    public void method() {
        System.out.println("子类重名方法执行!");
    }
}
public class Demo01ExtendsMethod {

    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.methodZi();
        zi.methodFu();

        //创建的是new了子类对象,所以优先用子类方法。
        zi.method();
    }
}

输出结果:

 注意事项:

无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的。

重写(Override) 概念:在继承关系当中,方法的名称一样,参数列表也一样。覆盖、覆写。

重载(Overload):方法的名称一样,参数列表不一样。

方法的覆盖重写特点:创建的是子类对象,则优先用子类方法。

5.继承中方法的覆盖重写

public class Fu {

    public Object method(){
        return null;
    }
}
public class Zi extends Fu {

    @Override
    public String method(){
        return null;
    }
}

方法覆盖重写的注意事项:

(1)必须保证父子类之间方法的名称相同,参数列表也相同。

@Override : 写在方法前面,用来检测是不是有效的正确覆盖重写。

这个注解就算不写,主要满足要求,也是正确的方法覆盖重写。

(2)子类方法的返回值范围,必须小于等于父类方法的返回值范围。

java.lang.Object类是所有类的公共最高父类(祖宗类);

Java.long.String就是Object的子类。

(3)子类方法的权限必须大于等于父类方法的权限修饰符。

小扩展提示:public > protected > (default) > private

备注:(default)不是关键字default,而是什么都不写,留空。

应用场景:

//本来的老款手机
public class Phone {

    public void call(){
        System.out.println("打电话");
    }
    public void send(){
        System.out.println("发短信");
    }
    public void show(){
        System.out.println("显示号码");
    }
}
//定义一个新手机,使用老手机作为父类
public class NewPhone extends Phone {

    @Override
    public void show() {
//        System.out.println("显示号码");
        super.show();// 把父类的show方法拿过来重复利用
        //自己子类再来添加更多内容
        System.out.println("显示姓名");
        System.out.println("显示头像");
    }
}
public class Demo01Phone {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.call();
        phone.send();
        phone.show();
        System.out.println("==============");

        NewPhone newPhone = new NewPhone();
        newPhone.call();
        newPhone.send();
        newPhone.show();
    }
}

输出结果:

 6.继承中构造方法的访问特点

 

public class Fu {

    public Fu(){
        System.out.println("父类无参构造方法");
    }
    public Fu(int num){
        System.out.println("父类有参构造");
    }
}
public class Zi extends Fu {

    public Zi(){
//        super();//在调用父类无参构造方法
        super(10);//在调用父类重载的构造方法
        System.out.println("子类构造方法");
    }
    public void method(){
//        super();
    }
}
public class Demo01Constructor {

    public static void main(String[] args) {
        Zi zi =new Zi();
    }
}

输出结果:

继承关系中,父子类构造方法的访问特点:

(1)子类构造方法当中有一个默认隐含的super()调用,所以一定是先调用的父类构造方法,后执行的子类构造方法。

(2)子类构造可以通过super关键字来调用父类重载构造。

(3)super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。

总结:

子类必须调用父类构造方法,不写则赠送super()。写了则用写的指定的super调用。super只能有一个,还必须是 第一个。

 

Java语言之继承与多态 任务描述我们都知道,生活中的继承无处不在,在数学王国的领域也是如此。最近数学王国中一位名叫Shape的父亲有一个烦心事,他有两个儿子Circle和Rectangle,这两个儿子比较叛逆,虽然Sharp苦口婆心的教育他们说要继承自己的方法,但他们觉得没有父亲也能计算自己的面积。无奈之下Shape找到了你,请你来编写程序告诉他的两个儿子要继承他的方法。相关知识继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。生活中的继承:。 阅读详情

相关推荐

Java开发的企业排班系统

Java开发的企业排班系统,用了springboot框架,人脸识别是采用百度接口的方式实现

自学网站s.jf3q.com,菜鸟的成长之路 6013

继承

继承 概述 继承是多态的前提,如果没有继承,就没有多态 继承关系当中的特点 子类可以拥有“父类”的内容 子类还可以拥有自己专有的内容 继承的格式 在继承的关系中,“子类就是一个父类”,也就是说,子类可以被当作父类看待 例如父类是员工,子类是讲师,那么:讲师就是一个员工。关系:is-a 定义父类的格式:(一个普通的类的定义) public class 父类名称{ //… ...

ning96的博客 173

opencv-meshgrid

使用opencv::repeat函数和std::iota函数完成meshgrid功能。 X Y Z 通俗的说就是根据Z的大小生成X矩阵,Y矩阵

yuegooxi的博客 1607

Java中的方法覆盖

一、Java中的方法覆盖 1.方法覆盖又称为方法重写,英语单词:override/overwrite 2.使用: 当父类中的方法已经无法满足当前子类的业务需求,子类有必要将父类中继承过来的方法进行重新编写,这个重新编写的过程称为方法的重写/覆盖 3.满足的条件: 方法的重写发生在具有继承关系的父子类之间 方法名相同返回值类型相同,返回值列表相同(尽量复制粘贴) ...

weixin_52326703的博客 5334

基于YOLO11的垃圾分类AI模型训练实战

通过这次实战,我们成功训练出了一个高性能的垃圾分类AI模型。项目展示了从数据准备、模型训练到结果分析的完整流程,为AI在环保领域的应用提供了有价值的参考。项目文件结构│ ├── best.pt # 最佳模型权重│ └── last.pt # 最新模型权重├── results.csv # 详细训练数据├── results.png # 训练曲线图├── confusion_matrix.png # 混淆矩阵└── args.yaml # 训练参数配置。

lydz1的博客 1659

泰山派RK3576开发板部署Qwen3-VL-4B多模态模型实战指南:从模型转换到板端推理全流程

本文提供了在泰山派RK3576开发板上部署阿里Qwen3-VL-4B多模态模型的完整实战指南。详细介绍了从环境准备、模型转换(包括视觉模型转换为.rknn格式和语言模型转换为.rkllm格式)、交叉编译到板端推理的全流程,重点讲解了如何利用RK3576的NPU进行硬件加速,实现高效的边缘AI应用。

weixin_30356433的博客 259

Java面向对象编程(四)

定义一个测试类GeometricTest,编写equalsArea方法测试两个对象的面积是否相等(注意方法的参 数类型,利用动态绑定技术),编写displayGeometricObject方法显示对象的面积(注意方法的参 数类型,利用动态绑定技术)。即有了对象的多态性后,在内存中实际上是加载了子类的属性和方法的,但是由于变量声明的是父类类型,导致编译时只能调用父类中声明的方法和属性,子类特有的属性和方法不能调用。子类中定义了与父类中同名同参数的方法,在多态的情况下 ,将此时的父类的方法称为虚拟方法。

zssxcj的博客 1187

龙芯3A5000开发板PMON升级UEFI固件实战指南

固件是计算机硬件与操作系统之间的关键桥梁,负责初始化硬件并引导系统启动。其工作原理是在上电后执行自检、加载引导程序,最终将控制权移交操作系统。在国产化平台中,采用标准化的UEFI固件具有重要技术价值,它能提供图形化配置界面、统一硬件驱动模型,并支持安全启动等现代特性,从而显著提升硬件兼容性与系统管理效率。这一技术广泛应用于PC、服务器及嵌入式设备,尤其在需要运行银河麒麟等主流操作系统的龙芯开发板场景中,将传统PMON固件升级至UEFI,能实现更流畅的系统安装与更稳定的运行体验。本文基于固件升级与UEFI引导

weixin_42664597的博客 563

java 继承是什么_java中继承指的是什么

java中继承指的是什么发布时间:2020-08-20 14:46:11来源:亿速云阅读:55作者:小新这篇文章将为大家详细讲解有关java中继承指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。java中继承是什么?Java中的继承是一个对象获取父对象的所有属性和行为的机制。它是面向对象编程系统(OOP)的重要组成部分。Java中继承的思想是,创建基于现...

weixin_32841641的博客 5756

告别‘耀斑’降落:手把手教你用PX4+激光测距仪实现固定翼精准自动着陆

本文详细介绍了如何利用PX4飞控与激光测距仪实现固定翼无人机的精准自动着陆,解决传统气压计在低空环境下的测量误差问题。通过硬件选型、安装要点、PX4参数配置及实战调校,帮助开发者实现厘米级高度感知,优化降落曲线,提升着陆稳定性与安全性。

weixin_30336061的博客 520

window下移动设备/硬盘报错位置不可用

移动硬盘指示灯亮,但电脑上不显示 报错信息 : 无法访问E:\。参数错误。 报错原因: 移动硬盘打不开提示参数错误,是因为这个H盘的文件系统内部结构损坏导致的。要怎么恢复里面的数据呢? https://jingyan.baidu.com/article/cb5d6105a80242005c2fe0c3.html 解决办法 : 不用格式化修复方法 方法一: 1、单击–开始–运行–输入cmd; 2、...

qq_40907977的博客 4928

Java 继承

Java 继承

m0_74012211的博客 1320

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java 继承详解

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。多个类可以称为子类,单独这个类称为父类、超类或者基类。子类可以直接访问父类中的非私有的属性和行为。通过 extends 关键字让类与类之间产生继承关系。......

buhuisuanfa的博客 1992

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++的继承和Java继承的比较

在C++中继承可分为公有继承(public)保护继承(protected)和私有继承(private),而在Java中默认只有一种继承(相当于C++中的公有继承)下面我们来看一段代码#include using namespace std; class A{ int aprivate; void Aprivate(){ cout << "A类的private方法" << endl;

水寒 4366

【java】继承

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。子类会具有父类的一般特性也会具有自身的特性。

m0_75163045的博客 1170

java继承有哪些_Java中的继承类型有哪些

Java中可以实现的继承类型有:单一继承,多重继承,多级继承、分层继承和混合继承。在java的继承中也是有不同类型的,本篇文章给大家介绍Java中的继承类型,让大家了解在java中可以实现几种继承,分别是如何实现的,希望对你们有所帮助。java类中继承在类的基础上,java中可以有三种类型的继承:单一继承、多级继承、分层继承单一继承:就是一个子类和父类关系,其中一个类扩展另一个类,我们称之为单个继...

weixin_42622428的博客 2220

java的继承

在 Java 中,继承是面向对象编程的一个重要特性,它允许创建一个新的类(称为子类或派生类)基于现有的类(称为父类或超类),子类会继承父类的属性和方法,同时还可以添加自己特有的属性和方法或者重写父类的方法。

2403_88493083的博客 1734

java可以多重继承吗_Java中的多重继承与组合vs继承

java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章。 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处。 Java中的多重继承 多重继承是创建具有多个超类的单个类的能力。 与其他一些流行的面向对象的编程语言(例如C ++)不同, java不提供对类中多重继承的支持。 Java不支持类中的多重继承,因为它可能导致钻石问题,而不是提供一些复杂的方法来解决它,而是有更...

cunfeng7797的博客 4015

Java的继承

Java继承是面向对象编程的核心特性,子类通过extends关键字继承父类,可复用父类的非私有成员并扩展新功能。

2401_84284464的博客 732

Java继承(Java继承是什么、特点、子类继承什么)壹

Java继承是面向对象编程中的一个重要概念,它允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和行为。通过继承,子类可以重用父类已有的代码,并且可以在此基础上添加新的功能。【子类是父类的一种】

m0_74154295的博客 948

java继承的作用_Java继承概述以及Java继承案例和继承的好处

Java继承概述1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可。2.在Java中通过extends关键字可以实现类与类的继承。例如:class 子类名 extends 父类名 {}3.单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。4.有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,...

weixin_29186249的博客 1996

java 继承 继承的限制

1  继承的基本概念     扩展父类的功能 2  java 中使用的extends  关键字完成继承   class 子类 extends 父类{} 案例一: package csdn.zyl.demo; class  People1{  private String name;  private int age;  public String getName() {  

panjiao119的博客 1517

Java继承的理解

Java继承 概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为 类的继承格式 class 父类 { } class 子类 extend 父类{ } 继承的目的 为了降低代码的冗余度 例如: 狮子类:属性(姓名,id) ,方法 (吃,睡,自我...

qq_42811988的博客 1345

java什么是继承_什么是java继承

什么是java继承继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。(推荐教程:java教程 )比如可以先定义一个类叫车...

weixin_39558754的博客 282
上一篇: Java--静态static关键字、静态代码块、数组类Arrays和数学工具类Math
下一篇: idea中所有Java类标识变成一个J
追光的海马
博客等级 码龄6年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值