类的继承
1.java继承的语法格式
关键词 extends
格式 限定词符号 class 子类的类名 extends 父类的类名{
}
注意:继承只能单继承
2.子类继承了父类的哪些属性和方法
子类继承了父类的所有的属性和方法
子类和子类对象可以调用的属性和方法
在同包中,可以调用所有的非私有的属性和方法(public和默认可以调用)
在非同包中,可以调用公共的受保护的属性和方法(public可以调用)
3.方法重写
必须有一个继承关系存在。
限定(访问)修饰符 返回值类型 方法名(参数类型 参数名,,,){
方法体,方法所需要调用的内容
}。
方法体可以修改。
子类和子类对象优先调用子类中有的方体,若无,则去父类中找。
4.自动转型
子类在继承父类之后可以自动转型为父类
例如 学生是父类 大学生是子类
student stu=new unstudent();
父类 子类
//强制转型
例如 int=(int)0.3;
优点:减少代码的重写,提高代码的重要性
缺点: 子类自动转型之后不可以调用父类中没有的方法
Java编译时会根据子类对象的类型去这个类中寻找这个方法,如果无则不能调用 ??????
练习:
A B C -> Hero(拥有ABC共同的属性和方法)
A B C 三者可以互相攻击包括自己类的对象
重写 子类独有的属性和方法
package game2;
public class character1 extends Boss {
}
package game2;
public class character2 extends Boss {
}
package game2;
public class character3 extends Boss {
//方法的重写
public void ctct(Boss a){
a.blood-=2*ap;
System.out.println(a.name+"受到"+name+"的攻击,"+"生命值减少为"+a.blood);
if(a.blood<0)
System.out.println(a.name+"被击败。");
}
}
package game2;
public class Main {
public static void main(String[] args){
character1 daji=new character1();
daji.name="妲己";
daji.blood=1226;
daji.ap=200;
character2 luban=new character2();
luban.name="鲁班";
luban.blood=2000;
luban.ap=500;
character3 caiwenji=new character3();
caiwenji.name="蔡文姬";
caiwenji.blood=3000;
caiwenji.ap=100;
do{
daji.ctct(caiwenji);
if(daji.blood>0)
caiwenji.ctct(daji);
}
while(daji.blood>0&&caiwenji.blood>0);
if(daji.blood>0)
do {
daji.ctct(luban);
if(luban.blood>0)
luban.ctct(daji);
}
while(daji.blood>0&&luban.blood>0);
if(caiwenji.blood>0)
do{
caiwenji.ctct(luban);
if(luban.blood>0)
luban.ctct(caiwenji);
}while(caiwenji.blood>0&&luban.blood>0);
}
}