首页 > 编程语言 >java 多态

java 多态

时间:2022-10-12 14:32:36浏览次数:50  
标签:colour java Apple price 多态 void public


/**
* obj-2
* 多态
*/
abstract class Fruits {
abstract void colour();
}
/**
* obj-2
*/
public class Apple extends Fruits {
public void colour(){
System.out.println("红色");
}

public void price(){
System.out.println("1.5");
}
}
/**
* obj-2
*/
public class Banana extends Fruits {
public void colour(){
System.out.println("黄色");
}

public void price(){
System.out.println("2.0");
}
}
/**
* java 多态
* 多态的优点
* 1. 消除类型之间的耦合关系
* 2. 可替换性
* 3. 可扩充性
* 4. 接口性
* 5. 灵活性
* 6. 简化性
* 多态存在的三个必要条件
* 1继承
* 2重写
* 3父类引用指向子类对象
* 多态的实现方式
* 方式一:重写:
* 这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。
* 方式二:接口
* 1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
*
* 2. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。具体可以看 java接口 这一章节的内容。
*
* 方式三:抽象类和抽象方法
*/
public class Obj_2 {

public static void main(String[] args) {
show(new Apple());
show(new Banana());

Fruits f = new Apple();// 向上转型
f.colour();// 调用的是 Apple 的 colour
Apple a = (Apple)f;// 向下转型
a.price();// 调用的是 Apple 的 price
}

public static void show(Fruits f){
f.colour();
if(f instanceof Apple){
Apple a = (Apple)f;
a.price();
}else if(f instanceof Banana){
Banana b = (Banana)f;
b.price();
}
}
}

 

标签:colour,java,Apple,price,多态,void,public
From: https://blog.51cto.com/u_15826214/5750158

相关文章

  • Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
    概要上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用。因此,本章我们讲解ArrayList。先对Arra......
  • java重写(Override)&重载
    /***obj_1*Java继承*动物类*/publicclassAnimal{privateStringname;privateintid;publicAnimal(StringmyName,intmyid){name=my......
  • java 接口
    publicclassLetterimplementsC{publicvoida(inta){System.out.println(a);}publicvoidb(intb){System.out.println(b);}pu......
  • Java 封装
    /***obj_4*/publicclassEncapTest{privateStringname;privateintage;publicintgetAge(){returnthis.age;}publicStringgetName......
  • java 抽象类
    /***obj_3*抽象类*/publicabstractclassEmployee{privateStringname;privateStringaddress;privateintnumber;publicEmployee(Stringname......
  • java 抽象类
    /***obj_3*抽象类*/publicabstractclassEmployee{privateStringname;privateStringaddress;privateintnumber;publicEmployee(Stringname......
  • wxjava服务商模式记录
    1.微信支付服务商必须绑定与小程序appid的授权关系。产品中心-appid账号管理-关联更多。然后在小程序登录--微信支付--确认。2.服务商功能-开发配置-特约商户appid配置-......
  • java中Runtime类执行研究
    Runtime类在java中一般类的调用方法是new类();所以我们使用newRuntime()来实例化一个Runtime类的对象importjava.io.IOException;publicclassmain{public......
  • java中代码块执行顺序
    classa{static{System.out.println("静态代码块");}{System.out.println("构造代码块");}publica(){System.out......
  • Java--字符串使用StringTokenizer来分割字符,由小写转大写,由大写转小写
    我们再来看看Java的字符串分割另外一种方法,使用StringTokenizer 可以使用StringTokennizer设置不同分隔符来分隔字符串,其默认的分割符是:空格"",制表符(\t),换行符(......