继承的概念
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
通过继承可以快速创建新的类,实现代码的重用,提高程序的可维护性,节省大量创建新类的时间,提高开发效率和开发质量。
继承性的好处:
减少代码的重复
提高代码复用性
便于功能拓展
✅继承性的格式:class A extends B{}
A:子类,派生类,subclass,B: 父类 ,超类, 基类,superclass
体现:一旦子类A继承父类B之后,子类A中就获取了父类B中声明的所有的属性和方法,特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构,只有因为封装性的影响,使得子类不能直接调用父类的结构而已
子类继承父类以后,还可以声明自己特有的特有的属性或方法:实现功能的拓展。而一个父类是可以有多个子类的,java中类的单继承性:一个类只能有一个父类,子父类是相对的概念,子类直接继承的父类,称为:直接父类,间接继承的父类称为:间接父类,子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法
如果我们没有显示的声明一个类的父类的话,则此类继承于java.lang.Object类,Object类是所有java类的根父类
继承中需要注意的点:
1.子类不能选择性继承父类;
2.Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;
3.构造方法不会被子类继承,但可以从子类中调用父类的构造方法。
例如
class teacher{ //声明一个teacher类为父类 String name; //定义父类的成员变量name、age int age; void show(){ //定义父类成员方法,将成员变量输出 System.out.println(name); System.out.println(age); } } class Student extends teacher { //声明一个Student类为子类并继承父类 } public class myfirst { public static void main(String[] args) { System.out.println("学生"); Student student=new Student(); //声明一个Student类的实例对象student student.name="Tom"; //子类调用父类的成员变量name并赋值 student.age=19; //子类调用父类的成员变量age并赋值 student.show(); //子类调用父类的成员方法show } }
方法的重写
在实际应用当中,我们所写的子父类的功能是不一样的,这时我们就需要重写或隐藏父类的该方法。
1重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作
2应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法
3重写的规定:
方法的声明:
权限修饰符 返回值类型 方法名(形参列表)
子类中的叫重写的方法,父类中的叫被重写的方法,子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同,子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符 特殊情况:子类不能重写父类中声明为private权限的方法
关于返回值类型:
父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void,父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的
子类和父类中的同名参数的方法都必须声明为非static的才为重写,为static的不是重写
例如
class A{ public void sayHello() { //输出英文欢迎 System.out.println("Hello,Welcome to Java!!!"); } public void sayBye() { System.out.println("GoodBye,everyone"); } } class B extends A { public void sayHello() { //输出中文欢迎 System.out.println("大家好,欢迎学习Java!!!"); } } public class myfirst { public static void main(String[] args) { B b=new B(); //创建子类B的一个实例对象,使用默认构造方法 b.sayHello(); //调用子类中重写的方法 b.sayBye(); //调用父类中的方法 } }
super关键字的使用
super理解为:父类的,super可以用来调用、属性、方法、构造器
super的使用,我们可以在子类的方法或构造器中。通过使用“super.属性”或“super.方法”的方式,显式的调用父类中声明的属性或方法,但是,通常情况下,我们习惯省略“super.
特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显示的使用”super.属性“的方式,表明调用的是父类中声明的属性。当子类重写了父类中的方法之后,我们想在子类中的方法中调用父类中被重写的方法时,则必须显式的使用“super.方法”的方式,表明调用的是父类中被重写的方法。
super调用构造器
我们可以在子类的构造器中显式的使用“super(形参列表)”的方式,调用父类中声明的指定的构造器,"super(形参列表)"的使用,必须声明在子类构造器的首行,我们在类的构造器中,针对于”this(形参列表)"或super(形参列表)“只能二选一,不能同时出现,在构造器的首行,没有显式的声明”this(形参列表)“或”super(形参列表)“,调用父类中的构造器
例如
package first; class A{ public String name="张飞"; //添加成员变量 public void say() { //添加成员方法say System.out.println("我是父类A成员方法say"); } } class B extends A{ public String name="关羽"; //与父类中同名的字段,隐藏父类 public void say(){ //重写方法say super.say(); //使用super关键字调用父类中的方法 System.out.println("我是子类B成员方法say"); System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量 } } public class myfirst { public static void main(String[] args) { B b=new B(); //创建子类的一个实例对象 b.say(); //调用子类中重写的方法 System.out.println("子类的name名字:"+b.name); //调用子类中的name } }
以上是Java的继承:概念和用法的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境