java核心技术----继承

面向对象编程的三大特征:封装、继承与多态。

所谓继承就是指人们可以基于已存在的类构造一个新类。继承已存在的类就是复用这些类的方法(method)和数据域(field)。

在此基础上,可以添加属于子类的新的方法和数据域,以满足新的需求。继承存在明显的“is a”的关系。

/**
 * Created by N3verL4nd on 2016/11/10.
 */

class Father{
    private String name;

    Father(){
        name = "";
    }
    Father(String name){
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

class Son extends Father{
    private String no;

    Son(){
        super();
        no = "";

    }
    Son(String name, String no){
        super(name);
        this.no = no;
    }
    public String getNo() {
        return no;
    }
}

public class HelloWorld {
    public static void main(String[] args) {
        Father father = new Father("father");
        Son son = new Son("son", "10010");
        System.out.println("father: " + father.getName());
        System.out.println("son: " + son.getName() + "  no:" + son.getNo());
    }
}

在JAVA中,所有的继承都是公有继承。

已存在的类叫做:超类、基类或者父类。由父类继承得到的叫做:子类、派生类或者孩子类。

尽管Father类是一个超类,但是并不是说它拥有比子类更多的功能。相反,子类比超类拥有的功能更加丰富。

Son类继承了Father的name数据域与getName方法。虽然Son类继承了Father的name属性,但是在Faher类内不能直接访问(private)。

只有Father类的getName方法才可以访问。如果子类重写了getName方法,而又想访问父类的getName方法,则用super关键字访问。

super的另一个用途:super()调用父类的构造函数。

super与this的区别:

this是一个对象的引用(son.getName()  --> getName(Son this));super只是一个指示编译器调用超类方法的特殊关键字。

在子类中只可以增加域和方法,不能删除继承来的域和方法。

由于Son类的构造器不能访问Father类的私有域,所以只能通过调用Father类的构造器对这部分数据进行初始化。可以使用super关键字调用父类的构造函数,而且必须是子类构造器的第一条语句。



Intellij果然是个牛逼的IDE。

this的两个作用:

1、引用隐私参数;2、调用该类的其他构造器。

super的两个作用:

1、调用超类的方法;2、调用超类的构造器。

调用构造器时,两者都必须作为第一条语句出现。

JAVA不支持多继承。

在JAVA程序设计语言中,对象变量是多态的。Father变量既可以引用一个Father类对象,

亦可以引用一个Son类对象。在java中,动态绑定是默认的处理方式。

子类对象可以赋值给父类变量,但是父类对象不能赋值给子类变量。



Keep it simple!
作者:N3verL4nd
知识共享,欢迎转载。
原文地址:https://www.cnblogs.com/lgh1992314/p/6616296.html