详解java继承、多态特性

一、继承
在设计继承时,会把共同的代码放在某个类中,然后告诉其他的类说此类是它们的父亲。当一个类继承另一个类的时候,也就是子类继承自父类。
举个简单的例子,Animal类(动物类),包含动物sleep()和eat()的方法,而Dog类以及Cat类也会存在这样的方法,为了使代码简洁,可让Dog类和Cat类继承Animal类。关键词为extends:

public class Animal{
	void sleep(){
	//pass
	}
	void eat(){
	//pass
	}
} 
public calss Dog extends Animal{
void sleep(){
	//pass
	}
}
public calss Cat extends Animal{
void eat(){
	//pass
	}
}

在上述代码块Dog和Cat类继承了Animal类之后就可以调用Animal的eat()和sleep()方法。如果Animal类的sleep()满足不了Dog类的需求,比如狗睡觉必须张开嘴巴,那Dog类必须要对sleep()方法进行重写,也就是覆盖掉父类的方法。**重写的时候要注意必须与父类保持相同的参数、返回类型和不能降低方法的存取权限(也就是不能从public变成private)。**如果子类还打算引用父类的方法然后再加上额外的行为,应该用super这个关键词。

void sleep(){
	super.sleep();
	//my own sleep
	}

这里就会先执行父类的sleep方法,然后再执行当前自定义的行为或功能。
要点:

  • 子类是extends父类出来的。

  • 子类会继承父类所有public类型的实例变量和方法,但不会继承父类所有private类型的变量和方法。

  • 继承下来的方法可以被覆盖掉,但实例变量不能。

  • 当某个方法在子类被覆盖过,调用这个方法时会调用覆盖过的版本。

  • 当子类未覆盖父类的方法时,调用这个方法时会直接调用父类的方法。
    继承的意义:

  • 避免了重复的代码
    在单一的位置定义共同程序代码,然后让子类继承父类的程序代码。当你想要改变这个行为程序时,只需改变这个地方,而子类就会发生同样的改变。

  • 定义出共同的协议
    继承会让你可以确保某个父型之下的所有类都会有父型所持有的全部方法,也就是说,你会通过继承来定义相关类之间的共同协议。
    二、多态

public class Animal{
	void sleep(){
	System.out.print("sleep");
	}
	void eat(){
	System.out.print("eat");
	}
} 
public calss Dog extends Animal{
void sleep(){
	System.out.print("Dog sleep");//重写了sleep()方法
	}
}
public calss Cat extends Animal{
void eat(){
	System.out.print("Cat eat");//重写了eat()方法
	}
}
public static void main(String []args){
Animal a = new Dog();
a.sleep();//由于Dog类重写了sleep方法,所以调用Dog类的sleep方法,输出Dog sleep
a.eat(); //由于没有重写,所以调用父类的eat()方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值