【我与Java的成长记】之继承详解(二)

这篇具有很好参考价值的文章主要介绍了【我与Java的成长记】之继承详解(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习

系列文章目录

能看懂文字就能明白系列
C语言笔记传送门
Java笔记传送门
🌟 个人主页:古德猫宁-

🌈 信念如阳光,照亮前行的每一步



前言

补充上篇笔记的知识点


一、super关键字的使用

在上篇文章中,我们最后讲到了子类访问父类中的成员可能会遇到的两种情况,一种是子类的成员名称和父类的名称不相同,另一种则是子类的成员名称和父类相同。
如果要在子类方法中访问父类同名成员时,该如何操作?直接访问是无法做到的,Java提供了关键字,该关键字主要作用:在子类中访问父类的成员。

举个例子:

class Base{
    public void methodA(){
        System.out.println("调用父类的成员方法A");
    }
    public void methodB(){
        System.out.println("调用父类的成员方法B");
    }
}
public class Derived extends Base{

    public void methodA(int a){
        System.out.println("调用子类的成员方法A");
    }
    public void methodB(){
        System.out.println("调用子类的成员方法B");
    }
    public void methodC(){
        super.methodB();
        super.methodA();
//        methodA();//没有传参,访问父类中的methodA
//        methodA(20);//传递int参数,访问子类中的methodA(int)
    }
    public static void main(String[] args) {
        Derived derived = new Derived();
        derived.methodC();
    }

}

【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习
所以在子类方法中,如果想要明确访问父类中成员时,借助super(super是获取到子类对象中从基类继承下来的部分)关键字即可。

注意:

  1. 只能在非静态方法中使用
  2. 在子类方法中,访问父类的成员变量和方法
  3. super.成员方法
  4. super.成员变量
  5. super()调用父类的构造方法

【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习

二、子类构造方法

所谓父子类,肯定是先有父后有子,所以,子类构造对象时,需要先调用基类的构造方法,然后执行子类的构造方法。

public class Animal {
    String name;
    int age;
    public Animal(String name,int age){
        this.name = name;
        this.age = age;
    }
}
public class Dog extends Animal {
    public Dog(String name ,int age){
        super("大黄",5);//注意子类构造方法中默认会调用基类的无参构造方法:super();
        //即用户没有写时,编译器会自动添加,而且super()必须是子类构造方法中第一条语句
        //并且只能出现一次
    }
}

【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习
在子类构造方法中,并没有写任何关于父类构造的代码,但是在构造子类对象时,先执行父类的构造方法,然后执行子类的构造方法,因为:子类对象中成员是有两部分组成的,父类继承下来的以及子类新增加的部分。父子父子,肯定是先有父再有子,所以在构造子类对象时候,先要调用父类的构造方法,将从父类继承下来的成员构造完整,然后再调用子类自己的构造方法,将子类自己新增加的成员初始化完整。

注意:

  1. 若父类显式定义无参或者默认的构造方法,在子类构造方法中第一行默认有隐含的super()调用,即调用父类构造方法
  2. 如果父类构造方法是带有参数的,此时需要我们为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。
  3. 在子类构造方法中,super()调用父类构造时,必须是子类构造函数中第一条语句。
  4. super()只能在子类构造方法中出现一次,并且不能和this()同时出现。

三、super和this

super和this都可以在成员方法中用来访问成员变量和调用其他的成员函数,都可以作为构造方法中的第一条语句,那他们之间有什么区别呢?

相同点:

  1. 都是Java中的关键字
  2. 只能在类的非静态方法中使用,用来访问非静态成员和方法
  3. 在构造方法中调用时,必须是构造方法中的第一条语句,并且不能同时存在

不同点:

  1. this是当前对象的引用,当前对象即调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用
  2. 在非静态成员中,this用来访问本类的方法和属性,super用来访问父类继承下来的方法和属性
  3. 在构造方法中,this()用于调用本类构造方法,super()用于调用父类构造方法,两种调用不能同时在构造方法中出现
  4. 构造方法中一定会存在super()的调用,用户没有写编译器也会增加,但是this()用户不写则没有

四、继承方式

在现实生活中,事物之间的关系是非常复杂,灵活多样的,比如:
【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习
但是在Java中只支持以下几种继承方式:
【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习
注意:

  1. Java中不支持多继承
  2. 一般我们不希望出现超过三层的继承关系,如果继承层次太多,就需要考虑对代码进行重构了
  3. 如果想从语法上进行限制继承,我们可以使用final关键字

五、final关键字

final关键字可以用来修饰变量,成员方法以及类。
1.修饰变量或字段,表示常量(即不能修改)
如图:
【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习

2.修饰类:表示此类不能被继承
如图:
【我与Java的成长记】之继承详解(二),java,开发语言,经验分享,笔记,学习文章来源地址https://www.toymoban.com/news/detail-791410.html


到了这里,关于【我与Java的成长记】之继承详解(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java---继承详解

    1 继承的含义         继承 :就是子类继承父类的 属性 和 行为 ,使得子类对象可以直接具有与父类相同的属性、相同的行为。子类可以直接访问父类中的 非私有 的属性和行为。 2 继承的好处 提高 代码的复用性 (。 使类与类之间产生了关系。 通过 extends ,可以

    2024年02月03日
    浏览(26)
  • Java继承详解

    目录 继承 为什么需要继承 继承的概念 继承的语法 父类成员的访问 子类中访问父类的成员变量 1.子类和父类不存在同名的成员变量 2.子类和父类成员变量同名 子类中访问父类的成员方法 1.成员方法名字不同 2.成员方法名字相同 super 子类构造方法 super和this 再谈初始化

    2024年02月13日
    浏览(29)
  • 【Java 进阶篇】Java Request 继承体系详解

    在Java编程中,Request(请求)是一个常见的概念,特别是在Web开发中。Request通常用于获取来自客户端的信息,以便服务器能够根据客户端的需求提供相应的响应。在Java中,Request通常涉及到一系列类和接口,构成了一个继承体系。本文将详细解释Java Request继承体系,包括Serv

    2024年02月07日
    浏览(38)
  • 告别过去,拥抱未来:一个Java开发者的成长之路

    时光飞逝,不知不觉已经到了大四毕业的时候。回顾这四年的学生生涯,Java开发是让我最为热爱和投入的一部分。在这里,我想和大家分享我在Java开发方面的收获、经验和感悟,同时也向过去的自己告别,迎接未来的挑战。 在大一的时候,我们学习了Java编程基础,当时我并

    2024年02月08日
    浏览(54)
  • 【JAVA】面向对象的编程语言(继承篇)

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 在之前的文章中,我们介绍过面向对象的编程语言,今天我们就来就进入到JAVA面对对象的编程世界,今天我们主要来介绍面向对象的编程范式中一个重要的概念——继承。 继承是java面向对象编程技术的一块基石,因为

    2024年02月09日
    浏览(39)
  • 猿创征文|我Java开发那些年陪我成长的工具清单

    📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN专栏 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 本摸鱼程序员也是历经软件专业的四年历程,想在校时期到如经也有几载光阴,不得不说从刚参与到工作中的一脸茫然到现在学会寻找让自

    2024年02月03日
    浏览(56)
  • 【Java 基础】引用型数组、Java 继承、super 关键字详解

    《 Java 零基础入门到精通 》 专栏持续更新中。通过本专栏你将学习到 Java 从 入门 到 进阶 再到 实战 的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,进群可找我领取 前端/Java

    2024年02月03日
    浏览(40)
  • 编程开发8大语言详解,为什么Java是我最推荐的?

    很多没有接触过编程语言的同学,都会觉得编程开发特别高端和神奇,担心理解不了更担心学不会。 当然,也有人会认为,你既然是做编程的,那么你应该什么都会,什么软件的开发都能完成,这是平哥经常听到的两种声音。 在此,平哥需要给大家科普一下, 编程确实改变

    2024年02月05日
    浏览(66)
  • Java SE 继承和多态 (图文搭配,万字详解!!)

    目录 1.继承 1.1 为什么需要继承 1.2 继承概念  1.3 继承的语法 1.4 父类成员访问 1.4.1 子类中访问父类的成员变量 1.4.2 子类中访问父类的成员方法  1.5 super  1.6 子类构造方法 1.7 super和this 1.8 再谈初始化 1.9 protected 1.10 继承方式  1.11 final 1.12 继承与组合 2

    2024年02月05日
    浏览(44)
  • c、c++、java、python、js对比【面向对象、过程;解释、编译语言;封装、继承、多态】

    目录 内存管理、适用 区别 C 手动内存管理:C语言没有内置的安全检查机制,容易出现内存泄漏、缓冲区溢出等安全问题。 适用于系统级编程 C++ 手动内存管理:C++需要程序员手动管理内存,包括分配和释放内存,这可能导致内存泄漏和指针错误。 适用于游戏引擎和系统级编

    2024年02月08日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包