当前位置: 首页 > news >正文

Java入门:09.Java中三大特性(封装、继承、多态)02

2 继承

需要两个类才能实现继承的效果。 比如:类A 继承 类B

  • A类 称为 子类 , 衍生类,派生类

  • B类 称为 父类,基类,超类

继承的作用

  1. 子类自动的拥有父类的所有属性和方法 (父类编写,子类不需要再编写) 。 代码复用

    目前私有的属性和方法无法访问。

  2. 多态的基础。

继承语法

  • 先定义父类 (单独的类)

  • 在定义子类的同时,实现与父类的继承关系

class B{String name ;public void t1() {}
}
​
class A extends B{//String name ;//public void t1() {}
}
​
A a = new A();
a.name = "zs" ;
a.t1();

继承特点

  1. 继承具有传递性

    A extends B extends C

    A类中,既有B类的内容,又有C类的内容

  2. 基础具有不可逆性

    A extends B

    A类中,有B类的内容

    但B类中没有A类的内容。

  3. Java只支持单继承 (C++支持多继承)

    一个类只能继承一个父类。

    但可以连续继承 A extends B extends C

    A extends B A extends C 不可以的

3 子类对象的创建过程

  • 不存在父类对象这个概念

class A{String name ;public void t1(){}
}
class B extends A{int age ;public void t2(){}
}
​
new A(); //不算父类对象
new B() ;//这就是我们所说的子类对象
 
  • 尽管B对象中的name属性,是从A类中继承而来的

  • 但使用过程中,直接通过name名称就可以访问到。

  • 可以使用JOL工具来查看内存结果

4 super关键字

可以指定父类的内容 (属性,方法,构造方法)

一般情况下,在子类中,可以默认指定父类的内容。

  • 变量访问的顺序: 局部变量->类变量->父类变量->报错

    class B{String name1 ;
    }
    class A extends B{String name1 ;public void t1(){String name1 ;print(name) ;}
    }

    但有些情况必须使用super来指定父类的内容

  1. 子类中写了与父类中同名的属性和方法 (重写)

  2. 在子类的构造方法中,指定要调用的父类的构造方法

    在创建子类对象时,不仅仅子类对象的构造方法会被调用,父类的构造方法也会被调用

    是在子类构造方法的第一行被调用的。 (先调用子类的构造器,先执行完父类的构造器)

    默认会在子类构造方法的第一行,执行super(),表示调用父类的无参构造器

class A{String name ;public void t1(){}
}
​
class B extends A{public void t1(){}public void t2(){name = "ls" ;name = "zs" ;super.t1();}
}
class A{int a ;int b ;public A(int a , int b){this.a = a ;this.b = b ;}public void A(){}
}
​
class B extends A{int c ;int d ;public B(){}public B(int c , int d){}public B(int a , int b , int c, int d){//想将a和b交给父类的构造器//super()super(a,b);this.c = c ;this.d = d ;}
}
​
B b =  new B(10,20,30,40);

this和super关键字

  • 在使用上,this和super特点相似

  • 但本质上完全不同

  • this的本质,是一个参数变量,存储的是当前方法所属对应的地址。

  • super的本质,就是一个关键字,用来指定父类的内容。这个指定效果在编译后就没有了。

    而this是在运行时有所应用的。

http://www.lryc.cn/news/441481.html

相关文章:

  • AI为云游戏带来的革新及解决方案:深度技术剖析与未来展望
  • 集合是什么
  • JavaDS —— 图
  • 魅思-视频管理系统 getOrderStatus SQL注入漏洞复现
  • SOME/IP通信协议在汽车业务具体示例
  • jupyter notebook添加环境/添加内核
  • 建模杂谈系列256 规则函数化改造
  • python实现冒泡排序的算法
  • 爱玩游戏的弟弟,被人投资了100万
  • Pandas_数据结构详解
  • Leetcode 3287. Find the Maximum Sequence Value of Array
  • python 山峦图
  • Open3D:3D数据处理与可视化的强大工具
  • YOLOv8改进系列,YOLOv8的Neck替换成AFPN(CVPR 2023)
  • BitLocker硬盘加密的详细教程分享
  • YOLOv8的GPU环境搭建方法
  • JZ2440下载后设置NAND启动文件系统
  • AI绘画与摄影新纪元:ChatGPT+Midjourney+文心一格 共绘梦幻世界
  • 金手指设计
  • Chainlit集成LlamaIndex并使用通义千问模型实现AI知识库检索网页对话应用增强版
  • 详解c++菱形继承和多态---下
  • python学习笔记目录
  • 非结构化数据中台架构设计最佳实践
  • 鹏鼎控股社招校招入职SHL综合能力测评:高分攻略及真题题库解析答疑
  • 【测向定位】差频MUSIC算法DOA估计【附MATLAB代码】
  • 智能车镜头组入门(四)元素识别
  • Java键盘输入语句
  • 【读书笔记-《30天自制操作系统》-22】Day23
  • C++学习笔记(33)
  • 智谱清影 -CogVideoX-2b-部署与使用,带你揭秘生成6s视频的极致体验!