位置: IT常识 - 正文

[JAVA]继承(java继承的基本概念)

编辑:rootadmin

目录

1.继承的概念

2.继承的语法

3.父类成员访问 

3.1子类中访问父类成员变量

3.2子类中访问父类成员方法

4.super关键字 

5.子类构造方法

6.继承方式

7.final关键字和类的关系


推荐整理分享[JAVA]继承(java继承的基本概念),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java继承和实现的区别,java继承,java继承关键字,java继承父类的构造方法,java继承和多态之子类继承性,java继承和多态之子类继承性,java继承的概念,java继承和多态之子类继承性,内容如对您有帮助,希望把文章链接给更多的朋友!

面向对象思想中提出了继承的概念,专门用来进行共性抽取,实现代码复用。就像是数学中,提取每一个数的公因数一般,把相同的代码提取出来,单独的成为一个类,但同时又可以被别的类使用其中的属性或方法。

1.继承的概念

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

 Cat和Dog类,既有从父类Animal继承的语句,也含有本身的语句。

class Animal{//父类 String name; int age; public void eat(){ System.out.println(this.name + " is eating."); }}class Cat extends Animal{ //Animal的子类 public void miaow(){ System.out.println("miaomiaomiao~"); }}class Dog extends Animal{ //Animal的子类 public void bark(){ System.out.println("wangwangwang~"); }}2.继承的语法

修饰符 class 子类 extends 父类{……}

class Animal{//父类 String name; int age; public void eat(){ System.out.println(this.name + " is eating."); }}class Cat extends Animal{//子类 public void miaow(){ System.out.println("miaomiaomiao~"); }}public class Test { public static void main(String[] args) { Cat cat = new Cat(); System.out.println(cat.age); System.out.println(cat.name); }}

我们可以看到,我们在main方法中,只实例化了cat对象,但是cat本身并没有定义任何成员变量,却发现可以调用成员变量age和name。而我们又使用了继承,由此可知对象cat当中的成员变量肯定来自于其父类Animal,同样的我们也可以同样的访问父类的方法。

通过上面的举例,我们值得注意的是:

子类本身要有属于自身的语句,如果和父类相同则没必要创建一个新的类。子类会将父类的成员变量和方法继承到子类当中3.父类成员访问 3.1子类中访问父类成员变量

我们可以在子类中使用方法来访问父类的成员,使用this会先在子类中寻找成员,如果找不到则会进入父类寻找,所以在子类中this也可以访问父类成员

class Animal{//父类 String name; int age; public void eat(){ System.out.println(this.name + " is eating."); }}class Cat extends Animal{ //Animal子类 public void setName(String name){ this.name = name; } public void miaow(){ System.out.println("miaomiaomiao~"); }}

还有另一种情况,就是子类中成员名和父类的相同。

class Animal{//父类 String name; //注意1 int age; public void eat(){ System.out.println(this.name + " is eating."); }}class Cat extends Animal{ //Animal子类 String name; //注意2 public void setName(String name){ this.name = name; } public void miaow(){ System.out.println("miaomiaomiao~"); }}

此处,子类和父类的成员名都相同,那下面的setName方法中访问的是子类的成员还是父类的成员呢??

答案是:子类的。就像是C语言中局部变量和全局变量一样,如果变量名相同,给其赋值局部变量会优先与全局变量(类似就近原则?)在这里也是同样的道理

“成员名相同,访问父类成员变量的方法我们下面会有所提及”

于是,我们总结以下几点:

如果访问的成员变量子类中有,优先访问自己的成员变量。如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。如果访问的成员变量与父类中成员变量同名,则优先访问自己的。 3.2子类中访问父类成员方法

如果成员方法名不相同的情况:

和访问父类成员变量类似的,先在子类中寻找要访问的成员方法,如果有即可以访问。如果子类没有,下一步是进入到父类寻找要访问的成员方法。父类中访问不到相应的成员方法,则编译器会报错。子类的优先级是大于父类的

[JAVA]继承(java继承的基本概念)

 成员方法名相同的情况:

class Base{ public void methodA(){ System.out.println("Base中的方法"); } public void methodB(){ System.out.println("Base中的方法"); }}class A extends Base{ public void methodA(int a){ System.out.println("A中的参数为int的methodA方法"); } public void methodB(){ System.out.println("A中的methodB方法"); }}public class Test { public static void main(String[] args) { A a = new A(); a.methodA();//没有参数,访问的是父类中的methodA方法 a.methodA(5);//有参数,访问的是子类中的methodA方法 a.methodB();//访问的是子类的方法,不可能访问到父类的方法 //因为先在子类中访问再到父类 }}

 

 总结:

通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到则访问,否则编译报错。通过派生类对象访问父类与子类同名方法时,如果父类和子类同名方法的参数列表不同(重载),根据调用方法适传递的参数选择合适的方法访问,如果没有则报错;4.super关键字 

Java提供了super关键字,该关键字主要作用:在子类方法中访问父类的成员。

class Base{ public void methodA(){ System.out.println("Base中的方法"); } public void methodB(){ System.out.println("Base中的方法"); }}class A extends Base{ public void methodA(int a){ System.out.println("A中的参数为int的methodA方法"); } public void methodB(){ System.out.println("A中的methodB方法"); super.methodB();//注意此处:用super关键字访问到了父类的成员方法 }}public class Test { public static void main(String[] args) { A a = new A(); a.methodA();//没有参数,访问的是父类中的methodA方法 a.methodA(5);//有参数,访问的是子类中的methodA方法 a.methodB();//访问的是子类的方法,不可能访问到父类的方法 //因为先在子类中访问再到父类 }}

 注意事项:

只能在非静态方法中使用在子类方法中,访问父类的成员变量和方法5.子类构造方法

 因为父类和子类是继承关系,即子类会继承父类的成员变量除此还有自身额外的成员变量,在构建子类的构造方法的时候要先调用父类的构造方法。

class Base{ public Base(){ System.out.println("调用了父类的构造方法"); }}class A extends Base{ public A(){ super();//调用父类的构造方法 用户没有写的时候会默认自动添加 System.out.println("调用了子类的构造方法"); }}public class Test { public static void main(String[] args) { A a = new A(); }}

 注意:

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

 java中的继承方式分为3种:

第一种:单继承

即一个类被另一个类继承

class A{ ……}class B extends A{ ……}

第二种:多层继承

即有一个类A,类B继承了A,类C继承了B

class A{ ……}class B extends A{ ……}class C extends B{ ……}

第三种:不同类继承同一个类

即有一个类A,类B继承A,类C继承A

class A{ ……}class B extends A{ ……}class C extends A{ ……}7.final关键字和类的关系

当final修饰一个类的时候,这个被修饰的类不能被继承

 编译器会报错

本文链接地址:https://www.jiuchutong.com/zhishi/299116.html 转载请保留说明!

上一篇:CSS选择器(css选择器权重)

下一篇:前端文件的上传与下载(前端文件的上传和下载)

  • 2017年SEO推广优化怎样做?(seo宣传推广)

    2017年SEO推广优化怎样做?(seo宣传推广)

  • 荣耀X30Max上市时间(荣耀 x30max)

    荣耀X30Max上市时间(荣耀 x30max)

  • 华为荣耀9x对比9xpro(华为荣耀9x对比华为荣耀nova5pro)

    华为荣耀9x对比9xpro(华为荣耀9x对比华为荣耀nova5pro)

  • 哈罗单车欠费有事吗(哈罗单车订单欠费超60天)

    哈罗单车欠费有事吗(哈罗单车订单欠费超60天)

  • airpods是出厂就激活么(airpods出厂价是多少)

    airpods是出厂就激活么(airpods出厂价是多少)

  • 微信长时间没登录现在登录不了怎么办(微信长时间没登录怎么解除保护)

    微信长时间没登录现在登录不了怎么办(微信长时间没登录怎么解除保护)

  • 哪些ipad支持鼠标(哪款ipad能用鼠标)

    哪些ipad支持鼠标(哪款ipad能用鼠标)

  • qq群举报怎么撤回(qq群举报如何撤销)

    qq群举报怎么撤回(qq群举报如何撤销)

  • 华为荣耀和p系列区别(华为荣耀和p系列mate系列哪个好)

    华为荣耀和p系列区别(华为荣耀和p系列mate系列哪个好)

  • 怎么解绑抖音直播身份证号(怎么解绑抖音直播)

    怎么解绑抖音直播身份证号(怎么解绑抖音直播)

  • matlaba和b的区别(matlab中a*b与a.*b有什么区别)

    matlaba和b的区别(matlab中a*b与a.*b有什么区别)

  • iphone录视频怎么暂停(iphone录视频怎么关闭声音)

    iphone录视频怎么暂停(iphone录视频怎么关闭声音)

  • 戴尔i7和i5有什么区别(戴尔i5和i7区别大吗)

    戴尔i7和i5有什么区别(戴尔i5和i7区别大吗)

  • 抖音账号可以同时登录吗(抖音帐号在哪里找)

    抖音账号可以同时登录吗(抖音帐号在哪里找)

  • 常用图像编码方式(常见的图像编码方式)

    常用图像编码方式(常见的图像编码方式)

  • 怎么用百度网盘下载视频(怎么用百度网盘搜索资源)

    怎么用百度网盘下载视频(怎么用百度网盘搜索资源)

  • 为什么blued聊天突然消失(blued聊着聊着突然不见了)

    为什么blued聊天突然消失(blued聊着聊着突然不见了)

  • 手机省电模式怎么关闭(手机省电模式怎么关闭oppo)

    手机省电模式怎么关闭(手机省电模式怎么关闭oppo)

  • 手机怎样开通彩信(手机怎样开通彩铃业务)

    手机怎样开通彩信(手机怎样开通彩铃业务)

  • vivos1pro录屏没有声音怎么办(vivo录屏怎么没有内部声音)

    vivos1pro录屏没有声音怎么办(vivo录屏怎么没有内部声音)

  • 怎样登录原抖音号(怎样登录原抖音帐号)

    怎样登录原抖音号(怎样登录原抖音帐号)

  • iphone11双卡双待怎么装(iphone11双卡双待显示一个卡关机怎么办)

    iphone11双卡双待怎么装(iphone11双卡双待显示一个卡关机怎么办)

  • 爱奇艺赠片怎么赠(爱奇艺赠片怎么领取)

    爱奇艺赠片怎么赠(爱奇艺赠片怎么领取)

  • 华为5的耳机孔在哪里(华为5的耳机孔是多大的)

    华为5的耳机孔在哪里(华为5的耳机孔是多大的)

  • iphone7plus支持5v2a吗(iphone7plus支持volte吗)

    iphone7plus支持5v2a吗(iphone7plus支持volte吗)

  • ios13不能用第三方电池吗(ios13不支持第三方蓝牙耳机)

    ios13不能用第三方电池吗(ios13不支持第三方蓝牙耳机)

  • 华为电子保修卡在哪找(华为电子保修卡在哪里查询)

    华为电子保修卡在哪找(华为电子保修卡在哪里查询)

  • 天猫超市包邮款怎么找(天猫超市包邮款怎么用)

    天猫超市包邮款怎么找(天猫超市包邮款怎么用)

  • Vue+Element UI-el-date-picker时间日期选择器组件(实现向后端传值)

    Vue+Element UI-el-date-picker时间日期选择器组件(实现向后端传值)

  • 无合同销售收入怎么算
  • 三大流转税包括哪些
  • 为什么要进行建筑工程预算
  • 广告费和业务宣传费15%还是30%
  • 企业支付投资者股利属于什么引起的财务活动
  • 采用重置成本计量属性的税种是
  • 企业所得税季度申报时间
  • 房地产企业销售未完工产品预计毛利率
  • 计提与不计提短贷的区别
  • 福利费用计入
  • 2021虚开发票案例
  • 本月应该确认收入,但是一般下月才开票该怎么处理?
  • 融资租赁到期后资产归属
  • 专票开票信息不填省份可以吗
  • 员工工资漏申报怎么办
  • 运输公司租赁车辆怎么做账
  • 应付职工薪酬年底怎么结转
  • Win10打开浏览器后自动弹出查找框
  • 0xc0000142怎么修复
  • Mac笔记本电脑截图
  • 公司买的手机怎么入账科目
  • iframe更改自身src
  • windows 查询进程
  • 最高像素是什么
  • 二手房交易土增税文件
  • 预算周转金会计怎么做账
  • 委托加工应税消费品的纳税义务人是受托方
  • 经营租入的固定资产是什么意思
  • 纳税人临时到外省从事经营活动
  • thinkphp5.0.23
  • 在报税显示缺少税种信息
  • javascript网页自动化
  • cookie set
  • php会员到期功能
  • 违约金税目
  • 利润表本年累计金额和本期金额有什么区别
  • 车险增值税发票模板图片
  • 所得税季度申报表怎么填
  • python3多态
  • 购进销售农产品正常损耗怎么算
  • 费用报销重复了怎么写情况说明
  • windows7基本使用教程
  • 公司月报和季报
  • 收到小微企业退税怎么做账
  • 保险公司给员工奖励是违法的吗
  • 采购材料单表格
  • 一般纳税人认定标准
  • 主营业务收入科目按其所归属的会计要素不同
  • 工会经费和福利费绩效目标怎么写
  • 新会计制度固定资产折旧账务处理
  • 非正常损失进项税额转出怎么计算
  • 应收票据背书转让购买原材料
  • 美元转到中国银行入账是人民币吗
  • 金税盘离线是什么意思
  • 客户从公司借钱怎么拒绝
  • 附条件的行政行为有哪些
  • 产品研发费用的计算公式
  • 银行对账单和银行流水的区别
  • 房地产行业人工成本占比
  • WINDOWS操作系统内置的GUEST
  • 如何下载苹果图书
  • linux如何用
  • schost.exe - schost是什么进程 有什么用
  • 文件夹windows
  • win8.1连不上wifi
  • Unity3d NGUI的drawcall,UISprite与UITexture
  • unity4.x升级到unity5.x材质丢失
  • unity3d连接数据库
  • jquery validation
  • 用bat脚本快速编程
  • jquery点击切换背景颜色
  • linux重定位命令
  • 基拉大和 freedom
  • node.js的理解
  • python文件操作方法
  • 安卓暗屏
  • python3 with语句
  • 四川国税发票真伪查询
  • 2024新车购置税政策
  • 个人所得税税单去哪里打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设