1.为什么需要使用继承
(1)减少重复的代码
(2)提高代码的重用性
(3)提高程序的扩展性
2.Java继承的语法格式
继承关键字:extends
格式:
public class 类名(子类,派生类,超类) extends 类名(父类,基类) {
}
注意:Java的继承是单继承。
3.子类继承到了父类的哪些内容
子类继承到了父类所有的属性和所有的普通方法,但是不包括构造方法。
注意:能继承,但不表示能使用,这是因为访问修饰符的关系:
同一个类中 同包但是不同类 不同包也不同类 不同包也不同类但是有继承关系
private 可以 不可以 不可以 不可以
默认的 可以 可以 不可以 不可以
protected 可以 可以 可以 可以
public 可以 可以 可以 可以
4.方法重写
重写的条件:
1.返回值类型,方法名,参数个数,参数类型,参数顺序都必须要和父类的完全一致。
2.子类重写方法的访问修饰符可以大于或者等于父类方法的访问修饰符。
如何调用:
创建的对象必须是子类的对象;
优先执行子类的方法,如果子类没有才会执行父类的。
5.自动转型
自动转型的格式:
父类名 对象名 = new 子类构造方法();
问题:
如果使用自动转型,是不能调用没有在父类中定义过的方法。
原因是:Java在编译的时候,只会考虑对象名的类型,根据对象名的类型去做方法匹配,如果在父类中存在则通过编译,如果不存在则报错。
6.多态
多态是由方法重载,继承,方法重写和自动转型等技术的组合。
7.类的继承代码举例:
奥特曼与小怪兽练习:
题目条件:
奥特曼和小怪兽要进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
奥特曼可以攻击小怪兽,还要能攻击其他的奥特曼对象。
小怪兽可以攻击奥特曼,还要能攻击其他的小怪兽对象。
小怪兽类和奥特曼类中只能有一个攻击方法,方法中也只能有一个参数。
由于小怪兽类和奥特曼类中只能有一个攻击方法,方法中也只能有一个参数,所以我们先定义一个Noman类,以便奥特曼类和小怪兽类继承它。Noman类中定义了一个fight方法,也是奥特曼类和小怪兽类中要求唯一使用的方法。
[img]http://dl2.iteye.com/upload/attachment/0109/1886/84987595-3bda-3a84-8787-46763b310e22.png[/img]
接下来我们定义奥特曼和小怪兽类。
[img]http://dl2.iteye.com/upload/attachment/0109/1888/6be1e96d-11ef-3f8d-966f-9a853022140d.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1890/9e5997d5-d056-3463-bfeb-3948ad2a26cb.png[/img]
并且这两个类中重写了fight方法。
最后我们定义一个Manage类来实现。其中,奥特曼与小怪兽既可以攻击自己类的对象,也可以攻击对方类中的对象。
[img]http://dl2.iteye.com/upload/attachment/0109/1892/081f5c2b-65af-3124-9c50-e08d7dea5835.png[/img]
(1)减少重复的代码
(2)提高代码的重用性
(3)提高程序的扩展性
2.Java继承的语法格式
继承关键字:extends
格式:
public class 类名(子类,派生类,超类) extends 类名(父类,基类) {
}
注意:Java的继承是单继承。
3.子类继承到了父类的哪些内容
子类继承到了父类所有的属性和所有的普通方法,但是不包括构造方法。
注意:能继承,但不表示能使用,这是因为访问修饰符的关系:
同一个类中 同包但是不同类 不同包也不同类 不同包也不同类但是有继承关系
private 可以 不可以 不可以 不可以
默认的 可以 可以 不可以 不可以
protected 可以 可以 可以 可以
public 可以 可以 可以 可以
4.方法重写
重写的条件:
1.返回值类型,方法名,参数个数,参数类型,参数顺序都必须要和父类的完全一致。
2.子类重写方法的访问修饰符可以大于或者等于父类方法的访问修饰符。
如何调用:
创建的对象必须是子类的对象;
优先执行子类的方法,如果子类没有才会执行父类的。
5.自动转型
自动转型的格式:
父类名 对象名 = new 子类构造方法();
问题:
如果使用自动转型,是不能调用没有在父类中定义过的方法。
原因是:Java在编译的时候,只会考虑对象名的类型,根据对象名的类型去做方法匹配,如果在父类中存在则通过编译,如果不存在则报错。
6.多态
多态是由方法重载,继承,方法重写和自动转型等技术的组合。
7.类的继承代码举例:
奥特曼与小怪兽练习:
题目条件:
奥特曼和小怪兽要进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
奥特曼可以攻击小怪兽,还要能攻击其他的奥特曼对象。
小怪兽可以攻击奥特曼,还要能攻击其他的小怪兽对象。
小怪兽类和奥特曼类中只能有一个攻击方法,方法中也只能有一个参数。
由于小怪兽类和奥特曼类中只能有一个攻击方法,方法中也只能有一个参数,所以我们先定义一个Noman类,以便奥特曼类和小怪兽类继承它。Noman类中定义了一个fight方法,也是奥特曼类和小怪兽类中要求唯一使用的方法。
[img]http://dl2.iteye.com/upload/attachment/0109/1886/84987595-3bda-3a84-8787-46763b310e22.png[/img]
接下来我们定义奥特曼和小怪兽类。
[img]http://dl2.iteye.com/upload/attachment/0109/1888/6be1e96d-11ef-3f8d-966f-9a853022140d.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1890/9e5997d5-d056-3463-bfeb-3948ad2a26cb.png[/img]
并且这两个类中重写了fight方法。
最后我们定义一个Manage类来实现。其中,奥特曼与小怪兽既可以攻击自己类的对象,也可以攻击对方类中的对象。
[img]http://dl2.iteye.com/upload/attachment/0109/1892/081f5c2b-65af-3124-9c50-e08d7dea5835.png[/img]