格式一般是属性、构造函数、set get方法。
【继承、方法重写、多态】
使用继承
①编写父类
②编写子类,继承父类。
继承关键字:extends。只能继承一个父类(单继承)。
protected只有子类可以继承。
子类访问父类成员:使用super关键字。super代表父类对象。
集成后的初始化顺序:
①父类属性
②父类构造方法
③子类属性
④子类构造方法
有些父类成员不能继承
①子类不能访问父类private成员(属性和方法)。
②子类与父类不在同包,使用默认访问权限的成员。
③构造方法(只能调用,不能继承)。
调用父类的有参构造super(name,sex,age);如不写这句话默认调用父类的无参构造,想调用父类的有参构造则必须写super(name,sex,age);这句。
访问修饰符protected
①可以修饰属性和方法
②本类、同包、子类可以访问
访问修饰符 本类 同包 子类 其他
private √
默认(friendly) √ √
protected √ √ √
public √ √ √ √
方法重写的规则
①在继承关系的子类中
②重写的方法名、参数、返回值类型必须与父类相同
③私有方法不能继承因而也无法重写
位置 方法名 参数列表 返回值 访问修饰符
方法重写 子类 相同 相同 相同 不能比父类更严格
方法重载 同类 相同 不同 无关 无关
方法重写的意义在于多态。
@Override在重写的方法上可有可无,但在不是重写的方法上加@Override是会报错的。
父类引用,子类实现。
何时使用继承:
①继承与真实世界类似,符合is-a关系的设计使用继承。
②继承是代码重用的一中方式,将子类都有的属性和行为放到父类中。
Java中也使用抽象类,限制实例化。
public abstract class Instrument(){
}
一个类抽象了就不能被实例化了。
抽象类的特点:
①不能被实例化
方法前加abstract后成为抽象方法,格式为:public abstract void play();
一个类中有一个抽象方法,则该类应该变成抽象类。
一个抽象类中可以有抽象方法,也可以没有抽象方法。
abstract也可用于方法----抽象方法
①抽象方法没有方法体。
②抽象方法必须在抽象类里。
③抽象方法必须在子类中被实现(抽象方法在子类里必须被重写),除非子类是抽象类。
抽象的意义在于不被实例化。
final方法
public final class play extends Violin(){
}
类前面有final修饰时,代表play是终极类,不能再被其他类继承了。
当一个属性前面加上final时,就变成了一个常量,即不可改变,如:public final int age=10;表示age的值为10,不可修改。
类加final后不能被继承,方法加final后不能被重写,属性加final后成为常量,不能被修改。抽象正好相反。
static可以用来修饰属性、方法、类和代码块。
static修饰的属性和方法称为类属性(类变量)、类方法。
public class StaticTest{
pulblic static int length;
public static void main(String[] args){
StaticTest.length=10;
}
}
main方法中不需要实例化,因为定义length时加了static,成为了类属性(也叫静态属性)。
通常把static与final结合使用(静态常量)。