多态and内部类(java)

简介: 多态and内部类(java)

多态and内部类(java)


多态

父类作为方法的参数 掌握

package com.qfedu.duotai3;
/**
 * 奥特曼欺负各种各样的小动物
 * @author renrui
 *
 */
public class App {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Outman laotie = new Outman();
    Dog dog = new Dog();
    Cat cat = new Cat();
    laotie.beatAnimal(dog);
    laotie.beatAnimal(cat);
  }
}
class Outman {
  // 方法的参数用的是父类的类型
  public void beatAnimal(Animal animal) {
    animal.beaten();
  }
}
abstract class Animal {
  public abstract void beaten();
}
class Dog extends Animal {
  // 被打
  @Override
  public void beaten() {
    System.out.println("奥特曼都敢欺负到我头上了,咬死你");
  }
}
class Cat extends Animal {
  @Override
  public void beaten() {
    System.out.println("敢打我,挠花你的脸");
  }
}

父类或者接口作为返回

简单工厂模式

创建对象,要创建的对象由相同的父类,或者有相同接口

根据不同状态,创建不同的对象

package com.qfedu.factory;
public class App {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    // 通过接口类型的变量引用不同实现类的对象
    IPay aliPay = PayFactory.createPay(PayConstants.PAY_TYPE_ALI);
    aliPay.pay();
    IPay wxPay = PayFactory.createPay(PayConstants.PAY_TYPE_WX);
    wxPay.pay();
  }
}
interface IPay {
  // 支付
  void pay();
}
class WxPay implements IPay {
  @Override
  public void pay() {
    // TODO Auto-generated method stub
    System.out.println("使用微信支付");
  }
}
class AliPay implements IPay {
  @Override
  public void pay() {
    // TODO Auto-generated method stub
    System.out.println("使用支付宝支付");
  }
}
// 简单工厂设计模式
// 体现多态思想
// 工厂类,根据不同的状态,返回不同的支付对象
class PayFactory {
  // 1 表示支付宝 2表示微信
  public static IPay createPay(int payType) {
    if(payType == PayConstants.PAY_TYPE_ALI) {
      IPay aliPay = new AliPay();
      return aliPay;
      // return new AliPay();
    } else if(payType == PayConstants.PAY_TYPE_WX) {
      IPay wxPay = new WxPay();
      return wxPay;
      // return new WxPay();
    } else {
      System.out.println("参数有误");
      return null;
    }
  }
}
// 常量类
class PayConstants {
  // 支付宝支付
  public static final int PAY_TYPE_ALI = 1;
  // 微信支付
  public static final int PAY_TYPE_WX = 2;
}

微信支付

支付宝支付

不会写两个不同的方法:

payWithWx()

payWithAlipay()

payWithPaypal()

payWIthIosNeigou()

内部类 了解

成员内部类、静态内部类、局部内部类 了解

匿名内部类 掌握

基本语法:

new 接口或者抽象类() {

重写抽象方法

};

很多情况下,将匿名内部类作为参数使用

package com.qfedu.anymous2;
public class App {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Outman outman = new Outman();
    Animal dog = new Animal() {
      @Override
      public void beaten() {
        // TODO Auto-generated method stub
        System.out.println("wang");
      }
    };
    outman.beatAnimal(dog);
    // 匿名内部类作为参数进行传递
    outman.beatAnimal(new Animal() {
      @Override
      public void beaten() {
        // TODO Auto-generated method stub
        System.out.println("miao");
      }
    });
    outman.beatAnimal(new Animal() {
      @Override
      public void beaten() {
        // TODO Auto-generated method stub
        System.out.println("嗷呜");
      }
    });
  }
}
abstract class Animal {
  public abstract void beaten();
}
class Outman {
  public void beatAnimal(Animal animal) {
    animal.beaten();
  }
}
目录
打赏
0
0
0
0
0
分享
相关文章
java中重载和多态的区别
本文详细解析了面向对象编程中多态与重载的概念及其关系。多态是OOP的核心,分为编译时多态(静态多态)和运行时多态(动态多态)。编译时多态主要通过方法重载和运算符重载实现,如Java中的同名方法因参数不同而区分;运行时多态则依赖继承和方法重写,通过父类引用调用子类方法实现。重载是多态的一种形式,专注于方法签名的多样性,提升代码可读性。两者结合增强了程序灵活性与扩展性,帮助开发者更好地实现代码复用。
141 0
|
6月前
|
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
407 15
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
Java零基础-多态详解
【10月更文挑战第10天】Java零基础教学篇,手把手实践教学!
153 4
Java多态背后的秘密:动态绑定如何工作?
本文介绍了Java中多态的实现原理,通过动态绑定和虚拟方法表,使得父类引用可以调用子类的方法,增强了代码的灵活性和可维护性。文中通过具体示例详细解析了多态的工作机制。
178 4
|
9月前
|
java继承和多态详解
java继承和多态详解
122 5
【一步一步了解Java系列】:重磅多态
【一步一步了解Java系列】:重磅多态
58 3
Java零基础-多态详解
【10月更文挑战第1天】Java零基础教学篇,手把手实践教学!
60 1
|
10月前
|
Java 多态趣解
在一个阳光明媚的午后,森林中的动物们举办了一场别开生面的音乐会。它们组成了一支乐队,每种动物都有独特的演奏方式。通过多态的魅力,狗、猫和青蛙分别展示了“汪汪”、“喵喵”和“呱呱”的叫声,赢得了观众的阵阵掌声。熊指挥着整个演出,每次调用 `perform()` 方法都能根据不同的动物对象唤起对应的 `makeSound()` 方法,展现了 Java 多态性的强大功能,让整场音乐会既有趣又充满表现力。
118 1
【Java】内部类
【Java】内部类
67 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问