这两天去研究了《坦克大战》的源代码,然后断断续续懵懵懂懂,纠结了两天后,觉得还是基础没打好,继续努力学习吧,现在还不是浪的时候。。。
今天学习了java 子父类中的函数,片面的说,也就是继承类中的方法的重写。
之前学习过方法的重载,那是指相同形参函数的调用。
而方法的重写则不一样。必须要保证4点:
1.子父类函数名必须相同;
2.返回类型也必须是一样的;
3.形参也必须是一样的;
4.最关键的一点,子类函数的访问权限必须大于等于父类同名函数;
(访问权限修饰符: public>default>private,其中private私有化特殊些,因为若父类私有,子类即使public或default大于它, 也不可调用。
另外,default默认的意思,这个访问权限修饰符一般在没有public和private时,自动隐形存在。比如: void change(){} ,它的访问权限就是default,虽然没写出来)
public class Study{
public static void main(String[] args){
Man one=new Man();
Woman two=new Woman();
one.eat();//子类有eat函数的重写,故输出结果为 万万没想到男人一天要吃两斤大米
two.eat();//子类无eat函数,调用基类eat(),故输出结果为 人类都要吃饭
}
}
//以上为主函数,以下为创类函数
class Person{
String name;
void eat(){ // 无访问修饰符,则为默认default访问权限
System.out.println("人类都要吃饭");
}
}
class Man extends Person{
public void eat(){
// 方法名,返回类型和父类同,且public>=default==true,构成方法的重写,此时也可不加public
name="万万没想到";
//方法内赋值父类变量不用加变量类型,因继承。若在外,则写String name="万万没想到";
System.out.println(name+"男人一天要吃2斤大米"); //eat函数方法的重写
}
}
class Woman extends Person{
}
另外:静态的函数只能重写(覆盖)静态的