Java继承
2021/4/9 12:26:23
本文主要是介绍Java继承,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
继承
-
概念:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
-
语法:class 子类 extends 父类 {} 子类又被称为派生类; 父类又被称为超类(Super Class)。
-
通过代码可以发现,子类(Student)并没有定义任何的操作,而在主类中所使用的全部操作都是由Person类定义的,这证明:子类即使不扩充父类,也能维持父类的操作。
//父类 public class Person { String name; public void print(){ System.out.println("打印这句话!"); } } //子类 public class Student extends Person{ } public class Application { //一个项目只有一个main方法 public static void main(String[] args) { Student student = new Student(); student.print(); } } //打印这句话!
-
在Java中,所有的类都直接或者间接继承Object
-
子类实际上是将父类定义的更加的具体化的一种手段。父类表示的范围大,而子类表示的范围小。
-
限制:
- Java之中只允许多层继承,不允许多重继承,Java存在单继承局限。
- 在一个子类继承的时候,实际上会继承父类之中的所有操作(属性、方法),但是需要注意的是,对于所有的非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)。
- 在继承关系之中,如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化,即:默认情况下,子类会找到父类之中的无参构造方法。
- 现在默认调用的是无参构造,而如果这个时候父类没有无参构造,则子类必须通过super()调用指定参数的构造方法:
-
在任何的情况下,子类都逃不出父类构造的调用,很明显,super调用父类构造,这个语法和this()很相似:super调用父类构造时,一定要放在构造方法的首行上。
public class Person { protected String name = "父类名字"; } public class Student extends Person{ private String name = "子类名字"; public void print(String name){ System.out.println(name); System.out.println(this.name); System.out.println(super.name); } } public class Application { //一个项目只有一个main方法 public static void main(String[] args) { Student student = new Student(); student.print("张三"); } } //张三 子类名字 父类名字
public class Person { protected String name = "父类名字"; public void print(){ System.out.println("父类方法"); } } public class Student extends Person{ private String name = "子类名字"; public void print(){ System.out.println("子类方法"); } public void test(){ print(); //调用自己类的方法 this.print(); //调用自己类的方法 super.print(); //调用父类的方法 } } public class Application { //一个项目只有一个main方法 public static void main(String[] args) { Student student = new Student(); student.test(); } } //子类方法 子类方法 父类方法
public class Person { protected String name = "父类名字"; public Person() { System.out.println("父类无参构造器"); } } public class Student extends Person{ private String name = "子类名字"; public Student() { System.out.println("子类无参构造器"); } } public class Application { //一个项目只有一个main方法 public static void main(String[] args) { Student student = new Student(); //默认调用父类构造方法 } } //父类无参构造器 子类无参构造器
Super注意点:
-
super 调用父类的构造方法,必须在构造方法的第一行;
-
super 必须只能出现在子类的方法或者构造方法中;
-
super 和 this 不能同时调用构造方法;
Super VS This 的区别
-
代表的对象不同
- this:本身调用这个对象
- super:代表父类对象的应用
-
提前不同:
- this:没有继承也可以使用
- super:只能在继承条件下使用
-
构造方法:
- this:本类的构造
- super:父类的构造
这篇关于Java继承的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?