Java---类的继承

文章目录

    • 1. 理解继承
    • 2. 继承概述
    • 3. 代码块理解
    • 4. 继承的好处与弊端
    • 5. 继承中变量的访问特点
    • 6. super关键字
    • 7. 继承中构造方法访问特点
    • 8. 继承中成员方法访问特点
    • 9. 方法重写
    • 10. 方法重写注意事项
    • 11. Java继承注意事项


1. 理解继承

在这里插入图片描述

在这里插入图片描述

2. 继承概述

 1. 继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

 2. 继承格式:public class 子类名 extends 父类名 {}。例如:public class Zi extends Fu {}

  • Fu:是父类,也被称为基类和超类。
  • Zi:是子类,也被称为派生类。

 3. 继承中子类的特点:(1) 子类可以有父类的内容。 (2) 子类还可以有自己特有的内容。

3. 代码块理解

public class Fu {public void show(){System.out.println("show方法被调用");}
}
public class Zi extends Fu {public void method(){System.out.println("method方法被调用");}
}
public class Demo {public static void main(String[] args) {Fu f=new Fu();f.show();Zi z=new Zi();z.method();z.show();}
}

在这里插入图片描述

4. 继承的好处与弊端

 1. 好处:(1) 提高了代码的复用性(多个类相同的成员可以放到同一个类中)。 (2) 提高了代码的维护性(如果方法的代码需要修改,修改一处即可)。

 2. 弊端:继承让类与类之间产生了关系,类的耦合性增强了,当父类发送变化时,子类实现也不得不跟着变化,削弱了子类的独立性。

 3. 继承的体现关系:is a。即什么是什么的一种,如苹果是水果的一种,猫是动物的一种。

5. 继承中变量的访问特点

 在子类方法中访问一个变量,顺序为:

  • 在子类局部范围找。
  • 在子类成员范围找。
  • 在父类成员范围找。
  • 如果都没有就报错。
public class Fu {public int age=30;
}public class Zi extends Fu {public int height=180;public void  show(){System.out.println(age);System.out.println(height);}
}public class Demo {public static void main(String[] args) {Zi z=new Zi();z.show();  //输出为30、180}
}
public class Fu {public int age=30;
}public class Zi extends Fu {public int height=180;public int age=20;public void  show(){System.out.println(age);System.out.println(height);}
}public class Demo {public static void main(String[] args) {Zi z=new Zi();z.show(); //输出为20、180}
}
public class Fu {public int age=30;
}public class Zi extends Fu {public int height=180;public int age=20;public void  show(){int age=40;System.out.println(age);System.out.println(height);}
}public class Demo {public static void main(String[] args) {Zi z=new Zi();z.show(); //输出为40、180}
}

6. super关键字

关键字访问成员变量访问构造方法访问成员方法
thisthis.成员变量,访问本类成员变量this(…),访问本类构造方法this.成员方法(…),访问本类成员方法
supersuper.成员变量,访问父类成员变量super(…),访问父类构造方法super.成员方法(…),访问父类成员方法
public class Fu {public int age=20;
}public class Zi extends Fu {public int age=30;public void  show(){int age=40;System.out.println(age);       //40System.out.println(this.age);  //30System.out.println(super.age); //20}
}public class Demo {public static void main(String[] args) {Zi z=new Zi();z.show();//输出结果为40、30、20}
}

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

 1. 子类中所有的构造方法默认都会访问父类中无参的构造方法。

  • 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
  • 每一个子类构造方法的第一条语句默认都是:super()

 2. 如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?(此时super()不起作用)

  • 通过使用super关键字去显示地调用父类的带参构造方法。
  • 在父类中自己提供一个无参构造方法。
public class Fu {public Fu(){System.out.println("Fu类中无参方法调用");}public Fu(int age){System.out.println("Fu类中带参方法调用");}
}public class Zi extends Fu {public Zi(){System.out.println("Zi类中无参方法调用");}public Zi(int age){System.out.println("Zi类中带参方法调用");}
}public class Demo {public static void main(String[] args) {Zi z1=new Zi();Zi z2=new Zi(20);}
}

在这里插入图片描述

public class Zi extends Fu {public Zi(){//super()super(20);System.out.println("Zi类中无参方法调用");}//super()public Zi(int age){//super()super(20);System.out.println("Zi类中带参方法调用");}
}

在这里插入图片描述

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

 继承中通过子类访问一个方法,顺序为:

  • 先在子类成员范围找。
  • 再在父类成员范围找。
  • 如果都没有就报错。
public class Fu {public void show(){System.out.println("Fu类中show方法调用");}
}public class Zi extends Fu {public void method() {System.out.println("Zi类中method方法调用");}public void show(){super.show();System.out.println("Zi类中show方法调用");}
}public class Demo {public static void main(String[] args) {Zi z=new Zi();z.method();z.show();}
}

在这里插入图片描述

9. 方法重写

 1. 方法重写概述:子类中出现了和父类中一模一样的方法声明。

 2. 方法重写应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,既沿袭了父类的功能,又定义了子类特有的内容。

 3. @Override:是一个注解,可以帮助我们检查重写方法的方法声明的正确性。

public class Phone {public void call(String name){System.out.println("给"+name+"打电话");}
}public class NewPhone extends Phone{@Overridepublic void call(String name) {System.out.println("先开启视频");super.call(name);}
}public class Demo {public static void main(String[] args) {Phone ph=new Phone();ph.call("张三"); //注意加双引号System.out.println("--------");NewPhone p=new NewPhone();p.call("张三");  //注意加双引号}
}

在这里插入图片描述

10. 方法重写注意事项

 父类中的私有方法不能被重写(父类的私有成员子类是不能继承的)。子类方法的访问权限不能更低(public>默认>私有)。

11. Java继承注意事项

 Java中类只支持单继承,不支持多继承。Java中类支持多层继承。

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/231628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中的JOIN与IN:性能对比与最佳实践

文章目录 JOIN与IN的基本介绍JOININ JOIN与IN性能对比使用JOIN的查询使用IN的查询 何时使用JOIN何时使用IN性能优化的其他考虑因素总结 🎉MySQL中的JOIN与IN:性能对比与最佳实践 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈…

手机一键“触达”!VR全景助力政务服务大厅数字升级

在我们的日常生活中,去政务服务大厅办事,总是避免不了遭遇“缺一样材料”的烦恼。因此网友总是吐槽,办事服务窗口总是多次要求提供不同证明,“一会儿说要身份证,一会儿又说要护照”,每次带上服务窗口要求的…

flask中路由route根据字典ID展示部分内容,字典名展示全部内容

from flask import Flask, jsonify , request,render_template,app Flask(__name__)app.config[JSON_AS_ASCII] Falsebooks [{"id": 1, "name": 三国演义},{"id": 2, "name": 水浒传},{"id": 3, "name": 西游记…

用Metasploit进行信息收集2

基于FTP协议收集信息 1.查看ftp服务的版本信息 打开metasploit 查看ftp版本的模块,并进入模块 msf6 > search ftp_version msf6 > use auxiliary/scanner/ftp/ftp_version msf6 auxiliary(scanner/ftp/ftp_version) > show options 查看靶机的端口开方情…

NX二次开发UF_CURVE_create_joined_curve 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_joined_curve Defined in: uf_curve.h int UF_CURVE_create_joined_curve(uf_list_p_t uf_curve_list, int creation_method, tag_t * joined_curve, int * status …

7、信息收集(2)

文章目录 一、指纹识别1、Nmap工具2、Wafw00f工具 二、使用Maltego进行情报收集 一、指纹识别 1、Nmap工具 命令一&#xff1a;nmap -sS -sV <ip>&#xff0c;使用TCP SYN的方式&#xff0c;扫描目标主机上常规端口运行的服务版本。 -sS&#xff1a;指定使用TCP SYN的方…

Drawer抽屉(antd-design组件库)简单用法

1.Drawer抽屉 屏幕边缘滑出的浮层面板。 2.何时使用 抽屉从父窗体边缘滑入&#xff0c;覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务&#xff0c;操作完成后&#xff0c;可以平滑地回到原任务。 需要一个附加的面板来控制父窗体内容&#xff0c;这个面板在需要时…

COGVLM论文解读(COGVLM:VISUAL EXPERT FOR LARGE LANGUAGE MODELS)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、摘要二、引言三、模型方法1、模型思路2、融合公式 四、训练方法总结 前言 2023年5月18日清华&智谱AI发布并开源VisualGLM-6B以来&#xff0c;清华KEG&…

高级IO—poll,epoll,reactor

高级IO—poll,epoll,reactor 文章目录 高级IO—poll,epoll,reactorpoll函数poll函数接口poll服务器 epollepoll的系统调用epoll_createepoll_ctlepoll_wait epoll的工作原理epoll的工作方式水平触发边缘触发 epoll服务器 reactor poll函数 poll函数是一个用于多路复用的系统调…

云时空社会化商业 ERP 系统 Shiro 反序列化漏洞复现

0x01 产品简介 时空云社会化商业ERP&#xff08;简称时空云ERP&#xff09; &#xff0c;该产品采用JAVA语言和Oracle数据库&#xff0c; 融合用友软件的先进管理理念&#xff0c;汇集各医药企业特色管理需求&#xff0c;通过规范各个流通环节从而提高企业竞争力、降低人员成本…

井盖倾斜监测方式,智能井盖传感器效果

大家是否都曾经想过&#xff0c;为什么路面上的井盖容易发生事故&#xff1f;其实这主要是因为井盖倾斜或者位移等异常状态出现时&#xff0c;由于人员巡查的范围较大从而无法及时察觉所导致的。为了保障道路行人和车辆的安全&#xff0c;对于井盖的监测需要不断完善和升级。而…