java三大特性之【继承】

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

概念

继承就是将多个类的共性抽取出来,提出继承的概念。就是在进行共性抽取,实现代码复用。
java三大特性之【继承】
提高代码的复用性,方便进行子类,子功能的扩展,将所有共性的内容放在父类(基类),子类只需要关注子类独有的属性和功能

父类和子类成员关系

  1. 父类和子类不存在同名的属性和方法
    java三大特性之【继承】
  2. 子类和父类成员变量重名
    编译器的就近匹配原则:若子类中不存在该属性,才会从父类中寻找同名属性;若父类中也没找到同名属性,编译报错。
    java三大特性之【继承】

问题:如果父类中的成员为私有,则变量为父类还是子类?

java三大特性之【继承】

由于c在父类中是私有权限,在子类中不能直接使用
当父类中存在private私有域,子类在继承父类时,私有域无法直接使用,这种继承称为隐式继承

  1. 父类和子类中的方法调用
    当通过子类对象访问方法时
  • 若子类中存在该方法,则优先访问子类的同名方法:子类和父类完全想通过,方法名称,参数类型,则优先访问子类中的方法。
  • 若子类不存在该方法,则会从父类中寻找是否存在该方法,存在则调用,不存在则编译出错,一定注意隐式继承的问题。

继承中构造对象的产生顺序

继承的使用规则: 当产生子类对象时,默认先调用父类的构造方法产生父类对象后调用子类构造方法产生子类对象。
(先有父才有子,先产生父类对象然后产生子类对象)
java三大特性之【继承】

super关键字

表示直接从父类中寻找成员变量或成员方法

1. super修饰属性,表示直接寻找父类的同名属性

java三大特性之【继承】
私有属性无法被调用!

2. super修饰方法
2.1 super修饰普通成员方法

表示直接在父类中寻找同名方法
java三大特性之【继承】
this和super的使用

  • this.方法是在当前类中寻找同名方法
  • super.方法是在父类中寻找同名方法
2.2 super修饰构造方法

表示显示在子类构造方法中调用父类的构造方法

  • 如果父类中没有无参构造,只包含一个有参构造,则在子类的构造方法中首行必须显式使用super(参数)关键字来调用父类的有参构造;
  • 若父类存在无参构造,则子类的构造方法首行可以不写super()

java三大特性之【继承】
当存在父类继承时,一般在子类中不出现this的构造方法调用。
原因:
子类的构造方法首行必须使用super;
this的构造方法调用也得放在首行。

笔试题

java三大特性之【继承】
静态块>构造块>构造方法

  • 静态块在类加载时执行一次,和具体产生对象无关,用于初始化静态变量
  • 类中的静态代码块还会优先于主方法执行

输出顺序:7,3,2,1,6,5,4,2,1,5,4,8
正确顺序:3,6,7,2,1,5,4,2,1,5,4,8

分析

  1. 主方法存在主类中,要执行主方法需要加载主类D,由于D继承于B,因此先加载B
    一旦加载类,静态代码块就会执行,则3(B的静态代码块),6(D的静态代码块)
  2. 进入主方法,输出7
  3. 产生子类对象D,首先需要产生父类对象B。
    对象的产生构造块和构造方法都会执行,则2154,2154执行两次
  4. 输出8

protected关键字

  • 在不同包的具有继承关系的之间可见,和对象是没有关系的。
  • 权限修饰符指的是在哪些“类”的内部可见,与具体的对象无关。
    由于default权限,是在同一个包的不同类之间可见
    protected(不同包之间的具有继承关系的类之间可见)>default
    因此,在同一个包的毫无关系的不同类之间,protected仍然可见!!!
    default有的权限,protected一定具备。

继承关系

java的单继承局限:一个类只能使用extends直接继承一个父类,不允许多重继承,但是允许多层继承

多重继承(不允许!!!):

public class C extends A,B{}

多层继承:

public class C extends B{}
public class B extends A{}

不同类继承于同一个类:

public class A{}
public class B extends A{}
public class C extends A{}

单继承:

public class A{}
public class B extends A{}

final关键字—终结器,到此为止

  1. final 修饰基本数据类型
    final 修饰的属性称为常量,一旦被final修饰的变量成为常量,初始化之后值不能修改

  2. final 修饰引用数据类型
    final 修饰的变量数值不能改,对于基本数据类型来说,就是具体的数值;对于引用数据类型,不可变的是引用类型的数值,即地址!!!与对象内部的内容无关。

final A a=new A()
//a对象内部的属性随意修改,但是a的指向不能修改
a.b=10;
a.b=20;
//报错,a无法再次指向别的A对象
a=new A();

a指向的对象不能修改

  1. final 修饰的属性使用之前必须进行赋值,一旦赋值,无法修改
  2. final 修饰的方法无法被重写/覆写
  3. final 修饰的类不能有子类
    JDK中String类就是final类

类和类之间的关系:继承和组合

  • 继承表示的是类之间的 is a 关系
//天然的继承关系,Dogs具备了Animal类中的所有属性和方法
Dog is a Animal;
  • 组合表示的是类之间的 has a 关系
School has a Student;
School has a Teacher;

组合关系也可以实现代码的复用,组合类的内部包含了其他类,直接调用其他类对象的属性和方法,实现代码复用。

总结:
组合和继承都可以实现代码复用,具体使用哪个关系需要根据具体场景进行判断。文章来源地址https://www.toymoban.com/news/detail-481738.html

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

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

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

相关文章

  • C++ 面向对象三大特性——继承

    ✅1主页:我的代码爱吃辣 📃2知识讲解:C++ 继承 ☂️3开发环境:Visual Studio 2022 💬4前言:面向对象三大特性的,封装,继承,多态,今天我们研究研究 C++的继承 。 目录 一.继承的概念及定义 1.继承的概念  2.继承的定义 二. 继承关系和访问限定符  三.基类和派生类对象赋

    2024年02月12日
    浏览(69)
  • 【面向对象语言三大特性之 “继承”】

    目录 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式  1.2.2继承关系和访问限定符  1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6. 继承与静态成员 7.复杂的菱形继承及菱形虚拟继承 8.继

    2023年04月08日
    浏览(44)
  • CSS_三大特性上_特性继承和层叠

    特性: 1、子元素有默认继承父元素样式的特点( 子承父业 ) 2、可以继承的常见属性(文字控制属性都可以继承) 1.color 2.font-style、font-weight、font-size、font-family 3.text-indent,text-align 4.line-height 注意点: 可以通过调试工具判断样式是否可以继承 特性: 1、给同一个标签设置不

    2024年02月08日
    浏览(50)
  • 【C++】三大特性 --- 继承的详细讲解

    目录 1.继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6.继承与静态成员 7.复杂的菱形继承及菱形虚拟继承 8.继承的

    2024年02月05日
    浏览(48)
  • 【javaSE】 面向对象程序三大特性之继承

    目录 为什么需要继承 继承的概念 继承的语法 注意事项  父类成员访问 子类中访问父类的成员变量 子类和父类不存在同名成员变量 子类和父类成员变量同名 访问原则 子类中访问父类的成员方法 成员方法名字不同 总结: 成员方法名字相同 总结: super 注意事项 子类

    2024年02月14日
    浏览(38)
  • 面向对象的三大特性之继承(C++)

    概念   继承机制是面向对象编编程使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。 定

    2024年02月06日
    浏览(51)
  • 【JAVASE】带你了解面向对象三大特性之一(继承)

    ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 Java 中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关

    2024年04月09日
    浏览(54)
  • CSS3-三大特性-继承性、层叠性、优先级

        CSS三大特性         1 继承性         2 层叠性         3 优先级         1 继承性             特性:子元素有默认继承父元素样式的特点(子承父业)             可以继承的常见属性:                 1 color                 2 font-style、font-weight、font-size、fo

    2024年02月11日
    浏览(43)
  • C++核心编程—类和对象,类的三大特性——封装、继承、多态

    纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 ①什么是对象? 生活中有各种各样的 事物 ,如人、动物、植物等在C++中将这些称为对象。 对象多种多样, 各种对象的属性也不相同 。 例如狗的品种,毛色,年龄等 各个对象都有自己的行为 ,例

    2024年02月07日
    浏览(64)
  • Python的类与对象、构造方法、类与对象三大特性封装、继承和多态、类型注解

      使用对象组织数据 在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的。 在程序中设计表格,我们称之为: 设计类(class) class Student: name None #记录学生姓名 在程序中打印生产表格,我们称之为: 创建对象 #基于类创建对象 stu_1 Student() stu_2 St

    2024年02月02日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包