Java中多态的理解
2024-08-25 08:25:41
最近学习Java里面的多态下面是个人的整理:
多态存在的3个必要条件:
1.要有继承
2.要有方法的重写
3.父类引用指向子类对象(对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接)
对于多态,可以总结它为:
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。
五、如果继承的子类继承父类的的一个方法后加以重载,则该父类的引用不能使用重载之后的那个方法。
public class Textduotai { public static void main(String[] args) {
// TODO Auto-generated method stub
/*这时多态就很好的体现了,你想给你的宠物喂食,只需要添加相对应动物类,和食物类的子类,比如你有养了一只乌龟,只需要写一个乌龟类让他继承动物类,和它相对应的food
*说话,你想喂鱼给你的猫吃就只需要调用feed方法,结果你的猫吃到了鱼:程序输出我叫小白,我喜欢吃鱼,
*/
Master master = new Master();
master.feedFood(new Cat(), new Fish()); } }
//定义动物类,动物有两个成员属性name和age
class Animal{
String name;
int age; //成员变量的访问器和修改器即get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//定义动物两个方法动物都会叫
public void animalcay(){
System.out.println();
}
//动物都要吃东西
public void eat(){
System.out.println();
} }
//定义猫类并且让猫类继承动物类
class Cat extends Animal{
String name;
int age; public Cat(){
System.out.println("小白");
}
//父类方法的重写
public void animalcay(){
System.out.println(" 喵喵叫");
}
public void eat(){
System.out.print("I like fish");
}
}
//定义狗类,并且让狗类继承动物类的方法
class Dog extends Animal{
String name;
int age; public Dog(){
System.out.println("我叫小黑");
}
//夫类方法的重写
public void animalcay(){
System.out.println(" 旺旺叫");
}
public void eat(){
System.out.print("我喜欢吃骨头");
}
}
//定义食物类
class Food{
String name;
public void showName(){
System.out.println();
}
}
class Fish extends Food{
String name;
//重写父类方法
public void showName(){
System.out.println("我喜欢吃鱼");
}
}
class Bone extends Food{
String name;
//重写父类方法
public void showName(){
System.out.println("骨头");
}
} //定义主人类,比如要给动物喂食
class Master {
String name ;
public Master(){ }
public Master(String name){
this.name = name;
}
public void feedFood(Animal an,Food food){
System.out.print(name+" "); an.eat();
System.out.println("最喜欢食物:");
food.showName();
}
}
在上面代码中我们要实现主人给动物喂食物,我们定义动物类,猫类和狗类都继承于动物类,定义了食物类,和它的两个子类鱼和骨头,在上面我们可以看出多态就是同一引用或者类型多种引用就叫多态
最新文章
- 如果你发现mysql的外键约束不管用了
- OpenCASCADE Ring Type Spring Modeling
- 配置javac环境
- django学习记录--第一个网页“hello django”
- Nginx系列4之基础配置
- Android Gradle的使用
- OS开发拓展篇—应用之间的跳转和数据传
- 刀哥多线程之gcd-01-sync&;async
- Java-J2SE学习笔记-字符串转化为二维数组
- Linux下RPM软件包的安装及卸载
- JavaScript设置简单的自动时间
- wifi驱动总结(2)
- cursor的moveToNext()与moveToFirst()
- NumPy的思考……
- “微信小程序商城构建全栈应用”开发小记
- 微信小程序笔记<;六>;模块化 —— module.exports
- linux命令学习之:cp
- MySQL中的联结表
- 【已解决】Android微信开放平台,申请移动应用的 应用签名 如何获取
- C# 图像自动切换
热门文章
- 201521123002《Java程序设计》第8周学习总结
- 201521123102 《Java程序设计》第4周学习总结
- 201521123059 《Java程序设计》第一周学习总结
- 201521123002《Java程序设计》第12周学习总结
- 201521123019 《Java程序设计》第11周学习总结
- 201521123108 《Java程序设计》第11周学习总结
- Git 查看/修改用户名、邮箱
- Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】
- Struts2第二篇【开发步骤、执行流程、struts.xml讲解、defalut-struts讲解】
- iOS开发中KVC、KVO简介