以上两个程序经过观察代码可发现,存在了大量的重复。比如每个中都有name,age成员变量,都有eat,sleep两个成员方法。如何解决呢?
2、继承的概念继承是面向对象思想一个重要的特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的成员变量及方法,此外,还可以增加新的属性方法。
继承主要解决的问题是:进行共性抽取,实现代码复用。
eg:其中Animal称为 父类,基类,超类
Dog,Cat称为 子类,派生类
3、继承的语法借助extends关键字。
语法: 修饰符 class 子类 extends 父类{
}
->子类继承父类的成员变量,成员方法
->子类继承父类后,必须添加自己特有的成员,体现出与父类的不同
eg:Dog3,Cat3两个子类均继承了父类Animal。
4、父类成员访问 4-1 子类访问父类的成员变量 4-1-1 子类与父类无同名的成员变量->如果 子类与父类不存在 同名的成员变量, 则访问父类继承下来的。如果父类也没有时,则编译报错。
4-1-1 子类与父类有同名的成员变量在子类方法中或者通过子类访问父类时:
->如果 子类与父类存在 同名的成员变量, 优先访问子类自己的成员变量。
4-2 子类访问父类的成员方法 4-2-2 成员方法 名字不同->成员方法名字不同时,在子类方法中或通过子类对象访问方法时,访问父类继承下来的。如果父类也没有时,则编译报错。
4-2-2 成员方法 名字相同->如果 子类与父类存在 同名的成员方法, 优先访问子类自己的方法。
->在这里,如果父类与子类同名方法的参数列表不同【重载,在子类与父类中也可以构成重载】,根据调用方法传递的参数选择适合的方法进行访问。
5、super关键字super关键字:
->在子类方法中,访问父类的成员。
->只能在非静态方法中使用
eg1: super.a ->访问父类成员
eg2: super.func() ->访问父类方法
eg3:super() ->调用父类的构造方法 【必须放在第一行】
->在构造子类对象时,先要调用基类的构造方法,将从基类继承下来的成员构造完整,然后再调用子类自己的构造方法,将子类自己新增加的成员初始化。
->在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句。
->super(...)只能在子类构造方法中出现一次,并且不能和this同时出现
6、初始化顺序之前再代码块时,执行顺序:先执行静态代码块,并且不论有几个对象,只执行一次。当创建对象时,才会执行实例代码块,最后执行构造方法。
对于继承关系,其执行顺序:
父类静态,子类静态 -->父类实例,父类构造 -->子类实例,子类构造
并且静态的只执行一次
7、继承方式Java 不支持多继承,但支持多重继承。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧