day 11

多态

多态体现的格式:

父类类型变量名= new子类对象;变量名.方法名();

父类类型: 指子类对象继承的父类类型,或者实现的父接口类型。代码如下:
Fuf=newZi();
f .method();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后方法。

1.多态

多态的转型分为向上转型与向下转型两种

向上转型:

多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的
(当父类引用指向一个子类对象时,便是向上转型。)
父类类型 变量名 = new 子类类型(); 如:

Doutai yu= new Doutai();

向下转型:

父类类型向子类类型向下转换的过程,这个过程是强制的
子类类型 变量名 = (子类类型) 父类变量名; 如:
Cat cat =(Cat)doy;
(一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。

1.2 转型

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥 有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点"小麻烦"。所以,想要调用子 类特有的方法,必须做向下转型。
public class Doutai {

public void method(){
	System.out.println("fu lei fan fa");
}
public void methodp(){
	System.out.println("fu lei de te you fan fa");
}

}

public class Doutai1 extends Doutai {

public void method(){
	System.out.println("zi lei fan fa");
}
public void methodb(){
	System.out.println("zi lei de te you fan fa");
}

}

public class Yu {

public static void main(String[] args) {
	Doutai yu= new Doutai();
	yu.method();
	yu.methodp();
	
	Doutai1 xu =new Doutai1();
	xu.method();
	xu.methodb();		
	xu.methodp();
	
	
	Doutai Doutai =new Doutai1();//
	Doutai.method();//子类把父类中的重写就是子类方法
	Doutai.methodp();
	//Doutai.methodb();
}

}

在这里插入图片描述

课堂实例

/* 成员方法

  • new 的是谁,就先用谁
  • 对比
  • 成员变量 编译看左边 运行还看左边
  • 成员方法 编译看左边 运行 看右边
  • */
    public class Fu {
    public static void main(String[] args) {
    Yt obj = new Yu();
    obj.method();
    obj.methodp();
    }
    }

public class Yo {
public static void main(String[] args) {
/直接访问 看等号左边是谁 就用谁 没有则向上找/
Yt obj = new Yu();//他认为是父类的
System.out.println(obj.num);//1.父类的
//System.out.println(obj.age);
/成员方法访问 看该/
obj.showNew();
}

}

public class Yu extends Yt {
int num=20;
int age =16;
public void showNew() {
System.out.println(“子类的方法”+num);
}

public void method(){
	System.out.println("zi lei fan fa");
}
public void methodq(){
	System.out.println("zi lei de te you fan fa");
}

}

public class Cat extends Doot {

@Override

public void eat() {
System.out.println(“猫够吃鱼”);
}
public void eathom() {
System.out.println(“猫抓老鼠”);
}
}

package Ling.java;

public abstract class  Doot {
	public abstract void eat();

}



 2020080605030
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值