package java_test; /* * 当子类中出现和父类中一样的函数时,当子类的对象调用该函数,运行的是子类中的函数,如同父类中的函数被覆盖了一样, * 这种情况就是函数重的另一种特性:重写(覆盖) * * 注意: * 1.子类覆盖父类时必须保证子类中的方法权限大于等于父类,才可以覆盖,否则报错 * 访问权限修饰符:public >default >private(本类才能访问) 成员前面没加任何访问权限修饰符,修饰符默认权限就是default *2.静态的函数只能覆盖静态的 *记住:重载:只看同名的方法的参数列表 * 重写:子父类中方法外部要一摸一样(方法体不一样) */ class Animal{ String type; void run(){ System.out.println("跑步中"); } } class Cats extends Animal{ } class Dog extends Animal{ void run(){ type="大黄狗"; System.out.println(type+"哼着歌跑步中"); } } public class A6_48 { public static void main(String[] args) { Cats c=new Cats(); c.run(); Dog d=new Dog(); d.run();//子类和父类都有这个方法,运行子类的 } }
运行结果:
跑步中
大黄狗哼着歌跑步中
package java_test; /* * 当子类中出现和父类中一样的函数时,当子类的对象调用该函数,运行的是子类中的函数,如同父类中的函数被覆盖了一样, * 这种情况就是函数重的另一种特性:重写(覆盖) * * 注意: * 1.子类覆盖父类时必须保证子类中的方法权限大于等于父类,才可以覆盖,否则报错 * 访问权限修饰符:public >default >private(本类才能访问) 成员前面没加任何访问权限修饰符,修饰符默认权限就是default *2.静态的函数只能覆盖静态的 *记住:重载:只看同名的方法的参数列表 * 重写:子父类中方法外部要一摸一样(方法体不一样) */ class Animal{ String name; void show(){ System.out.println("我是父类"); } void sleep(){ System.out.println("动物在睡觉"); } } class Cats extends Animal{ void show(String name){//重载父类show方法 System.out.println(name+"在睡觉"); } void sleep(){//重写父类sleep方法 System.out.println("小猫在睡觉"); } } public class A6_48 { public static void main(String[] args) { Cats c=new Cats(); c.show();//调用父类 shouw方法 c.show("多多");//调用子类重载的show方法 c.sleep();//子类和父类都有同一个方法,执行子类的 ,相当于父类被覆盖了 } }
运行结果:
我是父类
多多在睡觉
小猫在睡觉