第3章 继承与多态
包
(1)使用其他包中的类是需要import导入包
import pakegeName.clssName;
(2)访问修饰符
public:公共的,任何包下的内容都可以访问
缺省:默认只能被当前包访问
private:只被当前类访问
protected:只能当前包和不同包的子类访问
2.继承
(1)继承语法
[修饰符] class 子类名 [extends 父类名]{
//类成员
}
(2)子类会继承父类所有非私有成员
(3)一个子类只能有一个父类
3.重载和重写
(1)重载:方法名相同,参数列表必须不同,返回值必须相同
(2)重写,子类重写父类中的方法,方法头部必须相同。重写后父类方法会被覆盖,使用super可以调用被子类重写覆盖的方法
4.多态
(1)同一操作用于不同的对象会产生不同的结果
(2)通过父类的引用指向子类的对象,调用子类中重写父类的方法
(3)instanceof运算符,用来判断对象是不是该类的对象或该类子类的对象。也可以判断这个对象是否可以进行强制类型转换。
知识要点
继承的定义和使用:继承是面向对象程序设计的一个重要特征,它是通过继承原有类派生出子类,进而构造更为复杂的子类,子类既有新定义的行为特征,又继承了原有类的行为特征。
继承的定义与使用
注意事项
圣剑类和长矛类都拥有相同的属性,可以抽离出一个父类,将相同属性定义在父类中,子类继承拥有。
继承的特性
子类继承父类后,可以拥有父类中定义的公共方法。
package com.test;
public class Weapon {
String name;
int attackValue;
public Weapon(String name,int attackValue) {
this.name=name;
this.attackValue=attackValue;
}
public void attck() {
System.out.println("武器名:"+this.name+"\t攻击值:"+this.attackValue);
}
}
package com.test;
public class Sword extends Weapon{
public Sword(String name,int attackValue) {
super(name, attackValue);
}
}
package com.test;
public class Spear extends Weapon{
public Spear(String name,int attackValue) {
super(name, attackValue);
}
}
package com.test1;
import com.test.Spear;
import com.test.Sword;
public class MyTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Sword sw=new Sword("圣剑", 200);
sw.attck();
Spear sp=new Spear("长矛", 300);
sw.attck();
}
}
继承的实现
创建vehicles类,代码如下:
public class vehicles {
public String brand;
public String color;
public vehicles(String name,String color){
this.brand=name;
this.color=color;
}
public void showinfo() {
System.out.println("品牌:"+brand+"\t"+"颜色:"+this.color);
}
public void run() {
System.out.println("我"+this.brand+"正在行驶");
}
}