ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java继承

2021-04-09 11:32:27  阅读:128  来源: 互联网

标签:Java String 继承 子类 class Student 父类 public


继承

  • 概念:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

  • 语法: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

  • 子类实际上是将父类定义的更加的具体化的一种手段。父类表示的范围大,而子类表示的范围小

  • 限制:

    1. Java之中只允许多层继承,不允许多重继承,Java存在单继承局限。
    2. 在一个子类继承的时候,实际上会继承父类之中的所有操作(属性、方法),但是需要注意的是,对于所有的非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)。
    3. 在继承关系之中,如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化,即:默认情况下,子类会找到父类之中的无参构造方法。
    4. 现在默认调用的是无参构造,而如果这个时候父类没有无参构造,则子类必须通过super()调用指定参数的构造方法:
  • 在任何的情况下,子类都逃不出父类构造的调用,很明显,super调用父类构造,这个语法和this()很相似:super调用父类构造时,一定要放在构造方法的首行上。

image

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注意点:

  1. super 调用父类的构造方法,必须在构造方法的第一行;
  2. super 必须只能出现在子类的方法或者构造方法中;
  3. super 和 this 不能同时调用构造方法;

Super VS This 的区别

  1. 代表的对象不同

    • this:本身调用这个对象
    • super:代表父类对象的应用
  2. 提前不同:

    • this:没有继承也可以使用
    • super:只能在继承条件下使用
  3. 构造方法:

    • this:本类的构造
    • super:父类的构造

标签:Java,String,继承,子类,class,Student,父类,public
来源: https://www.cnblogs.com/saxonsong/p/14626952.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有