继承:
extends
只能继承一个父类
编写父类:公共的属性和方法
编写子类,继承父类:子类特有的属性和方法
多态:父类引用子类对象实现
理解继承:
子类访问父类成员:使用super关键字
访问父类属性:super.name; super代表父类对象
通过super来调用父类的方法、属性和构造
继承后的初始化顺序:
父类属性---父类构造方法---子类属性 --子类构造方法
有些父类的不能继承:
子类不能访问父类private成员 属性和方法
子类与父类不在同一个包里,默认访问修饰符修饰的成员
构造方法 可以调用父类的构造,但是不能继承父类的构造
访问修饰符:protect 可以修饰属性和方法,本类、同包、子类可以访问
访问修饰符总结:
方法重写的规则:有继承才有重写
在继承关系的子类中,在子类中重写父类的方法
重写的方法名、参数、返回值类型必须与父类相同
私有方法不能继承因而也无法重写
父类调用,子类实现
方法重写与方法重载:
位置 方法名 参数表 返回值 访问修饰符
方法重写 子类 相同 相同 相同 不能比父类更严格
方法重载 同类 相同 不同 无关 无关
何时使用继承:
继承与真实世界类似
符合is-a关系的设计使用继承
继承是代码重用的一种方式
将子类都有的属性和行为放到父类中
Java中也使用抽象类,限制实例化 abstract 不能被实例化,没有实例化的意义
抽象类的特点:
不能被实例化,
如果一个类中有抽象方法,则这个类必须是抽象类
抽象类中可以有抽象方法,也可以没有
抽象方法:
public abstract void sss();
没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类
final用法:
终极类不想再被继承
方法不希望被重写
终极属性不想再被修改
static:
static可以用来修饰属性、方法和代码块
static修饰的属性和方法称为类属性(类变量)、类方法
静态属性,也可以称为类属性,
不会在内存中开辟新空间,只有一个,
静态方法:调用Statictest.test();
将重复的代码抽象到父类,使用继承优化代码
编写父类:公共的属性和方法
编写子类,继承父类:子类特有的属性和方法
多态:父类引用子类对象实现
理解继承:
子类访问父类成员:使用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();