Java继承

简单的对学到的继承进行一个整理

1.什么是继承

继承是面向对象的三大特点之一,是基于某个父类对对象的定义进行拓展,而产生新的子类的定义。

子类可以继承父类原有的某些定义,也可以增加原先父类没有的定义,或者覆写父类中的某些特点。

2.生活中的继承

为了便于理解,举一个生活中非常经典的小例子。

 

 

 食草动物和食肉动物都是动物的一个子类;动物是食草动物和食肉动物的父类。

3.继承的语法格式

 Class 子类名 extends 父类名

4.继承初始化的过程

在继承中,子类具有父类的行为,当子类调用父类方法的时候,要确保父类也得到正确的初始化。

先介绍一下构造器:

构造器是用于对象初始化的。

(1)构造器的名称必须和当前方法的名称一致;

(2)禁止定义构造器的返回类型,void xxx()表示的是一个普通方法,不是构造器;

(3)在构造器中不使用return语句;

(4)如果没有定义构造器,编译器会生成一个默认构造器。

为了保证父类能够正常初始化,在子类构造器中隐藏了一句 super();其用来调用父类的默认构造器,而且必须写在子类构造器中的第一句。

class Animal{
private static int A = printInit("static Animal region init ");
{
System.out.println("--Animal代码块--");
}
public Animal(){
System.out.println("---Animal构造器---");
}
public static int printInit(String s){
System.out.println(s);
return 30;
}
}
class Bird extends Animal{
private static int A = printInit("static Bird region init ");
{
System.out.println("--Bird代码块--");
}

public Bird (){
System.out.println("---Bird构造器 ---");
}

}
class Parrot extends Bird{
private static int A = printInit("static Parrot region init ");
{
System.out.println("--Parrot代码块--");
}

public Parrot()
{
System.out.println("--Parrot构造器--");
}

public static void main(String[] args) {
Parrot parrot = new Parrot();
}

}

实验结果:

static Animal region init
static Bird region init
static Parrot region init
--Animal代码块--
---Animal构造器---
--Bird代码块--
---Bird构造器 ---
--Parrot代码块--
--Parrot构造器--

通过代码可以观察到,执行的顺序是父类静态代码块>子类父类代码块>父类代码块>父类构造器>子类代码块>子类构造器

构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。

 5.注意点

子类能不能继承父类中的属性和方法,取决于父类中属性和方法的修饰符。

 

posted @ 2020-06-10 18:52  luckyzoe  阅读(255)  评论(0)    收藏  举报