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();//子类和父类都有同一个方法,执行子类的 ,相当于父类被覆盖了
}
}
运行结果:
我是父类
多多在睡觉
小猫在睡觉