- 使用继承
- 编写继承:
class Engineer{
//公共的属性和方法
}
- 编写子类,继承父类,
class SoftEnineer extends Enginerr{
//子类持有的属性和方法
}
class OrderBill extends TestEngineer{
} //只能继承一个父类
- protected 修饰属性或方法的时候, 只有子类可以继承到.
- 子类访问父类成员
- 父类属性->父类构造方法->子类属性->子类构造方法
- 有些父类成员不能继承
- 子类不能访问父类的private成员
- 子类与父类不同包,使用默认反问权限的成员
- 构造方法(只能调用,不能继承)
- 访问修饰符
- private 只在本类下可以用
- 默认(friendly), 本类同包都可用
- protected 本类同包子类都可用
- public 都可用
- 方法重写的规则
- 在继承关系的子类中
- 重写的方法名.参数.返回值类型必须与父类相同
- 私有方法不能继承因而也无法重写
@Override
protected void sleep() {
}
-
方法重写--方法重载
VS |
位置 |
方法名 |
参数表 |
返回值 |
访问修饰符 |
方法重写 |
子类 |
相同 |
相同 |
相同 |
不能比父类更严格 |
方法重载 |
同类 |
相同 |
不相同 |
无关 |
无关 |
- 何时使用继承
- 与真实世界类似,符合is-a关系的设计使用继承
- 继承也是代码重用的一种方式,将子类所有的属性和行为都放到父类里
- java中也使用抽象类,限制实例化
-
public abstract class lei(){
public abstract void S();
}
abstract也可用于方法--抽象方法
- 抽象方法没有方法体
- 抽象方法必须在抽象类
- 抽象方法必须在子类中被实现,除非子类也是抽象类
- final用法
- 类不希望被继承
- 方法不希望被重写
- 属性值不希望被修改 final int a= 0; public final void play(){}; public final class Piano{}
- static
- 可以用来修饰属性,方法和代码块和类
- 修饰的属性和方法成为类属性(类变量).类方法