Java继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3207字,纯文字阅读大概需要5分钟。
内容图文
![Java继承](/upload/InfoBanner/zyjiaocheng/594/6229b49d64b143228085ab4434cfbd26.jpg)
继承
-
概念:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
-
语法: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继承全部内容,希望文章能够帮你解决Java继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。