继承中成员函数的特点:(重写用途)

/**
继承中成员函数的特点:
重写(也称为覆盖):子类在继承父类时,含有和父类中一样的函数
当创建子类对象时,执行的是重写之后的方法,也就是子类非方法,而不是父类的方法


为什么设计重写,会带来什么好处呢?
例如:张三和张小三都要吃饭,张小三吃完饭后还需要抽烟,
行为一样,通过重写,就可以不用再在子类中定义其他的函数了


在重写时,需要注意一些问题:
①权限问题:子类的权限要大于等于父类中的方法的权限(也就是类父类是public的,子类不能是private)
②父类中私有的方法不能被子类的重写(也就是如果父类是private,是不能被子类重写的)
③静态智能覆盖静态的,(如果父类中存在静态的函数,子类重写是也要和父类中的静态一样)
④当父类中的方法的返回值是应用类型时,子类在重写时返回值类型可以是父类中犯法的返回值类型,也可以是其子类类型
**/
class A
{}
class B extends A
{}
class FuFunction
{
public static void fun(){}
public  A show()
{
System.out.println("fu");
return new A();
}
}
class ZiFunction extends FuFunction
{
public static void fun(){}//如果是静态的子类重写是也要和父类中的静态一样
public A show()
{
super.show();
System.out.println("zi");
return new B();
}


}
//案例:张三和张小三都要吃饭,张小三吃完饭后还需要抽烟,


class Zhangsan
{
public void eat()
{
System.out.println("细嚼慢咽的吃");
}
}
class ZhangXiaoSan extends Zhangsan
{
//沿袭了父类的功能,改变了具体的实现方式
public void eat()
{
super.eat();
System.out.println("抽根烟:饭后一根烟,快乐如神仙");
}
}
public class ExtendsCYFunction {
public static void main(String[] args) {
//效果1 
ZiFunction zf=new ZiFunction();
zf.show();
//效果2
//抽烟的演示:
ZhangXiaoSan zxs=new ZhangXiaoSan();
zxs.eat();
}
}
/*输出效果:
效果1输出结果
fu
zi
效果2输出结果
细嚼慢咽的吃
抽根烟:饭后一根烟,快乐如神仙


 */

你可能感兴趣的:(【Java】Java基础使用)