java核心技术----继承

时间:2023-02-16 12:16:08

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

所谓继承就是指人们可以基于已存在的类构造一个新类。继承已存在的类就是复用这些类的方法(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关键字调用父类的构造函数,而且必须是子类构造器的第一条语句。

java核心技术----继承

java核心技术----继承

java核心技术----继承

Intellij果然是个牛逼的IDE。

this的两个作用:

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

super的两个作用:

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

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

JAVA不支持多继承。

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

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

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