天天看点

2016/08/11 继承

继承: extends 只能继承一个父类

将重复的代码抽象到父类,使用继承优化代码

使用继承:

编写父类:公共的属性和方法

编写子类,继承父类:子类特有的属性和方法

多态:父类引用子类对象实现

理解继承:

子类访问父类成员:使用super关键字

访问父类属性:super.name; super代表父类对象

通过super来调用父类的方法、属性和构造

继承后的初始化顺序:

父类属性---父类构造方法---子类属性 --子类构造方法

有些父类的不能继承:

子类不能访问父类private成员 属性和方法

子类与父类不在同一个包里,默认访问修饰符修饰的成员

构造方法   可以调用父类的构造,但是不能继承父类的构造

访问修饰符:protect 可以修饰属性和方法,本类、同包、子类可以访问

访问修饰符总结:

访问修饰符 本类 同包 子类 其他
private 可以
默认friendly 可以 可以
protected 可以 可以 可以
public 可以 可以 可以 可以

方法重写的规则:有继承才有重写

在继承关系的子类中,在子类中重写父类的方法

重写的方法名、参数、返回值类型必须与父类相同

私有方法不能继承因而也无法重写

父类调用,子类实现

方法重写与方法重载:

位置 方法名 参数表 返回值 访问修饰符

方法重写 子类 相同 相同 相同 不能比父类更严格

方法重载 同类 相同 不同 无关 无关

何时使用继承:

继承与真实世界类似

符合is-a关系的设计使用继承

继承是代码重用的一种方式

将子类都有的属性和行为放到父类中

Java中也使用抽象类,限制实例化 abstract  不能被实例化,没有实例化的意义

抽象类的特点:

不能被实例化,

如果一个类中有抽象方法,则这个类必须是抽象类

抽象类中可以有抽象方法,也可以没有

抽象方法:

public abstract void sss();

没有方法体

抽象方法必须在抽象类里

抽象方法必须在子类中被实现,除非子类是抽象类

final用法:

终极类不想再被继承

方法不希望被重写

终极属性不想再被修改

static:

static可以用来修饰属性、方法和代码块

static修饰的属性和方法称为类属性(类变量)、类方法

静态属性,也可以称为类属性,

不会在内存中开辟新空间,只有一个,

静态方法:调用Statictest.test();