zoukankan      html  css  js  c++  java
  • 多态and接口

    一、多态

    1、什么是多态?

    解析:不同的对象对于同一个操作,做出的响应不同

             具有表现多种形态的能力的特征

    2、使用多态的优点

    解析:为了实现统一调用

    一个小例子:<父类类型作为参数>

    父类(Pet) 子类(Gog,Penguin) 主人类(Master)测试类(Test)

    Pet

    public abstract class Pet {
    
        public abstract void eat();
    
    }

    Dog

     public class Dog extends Pet{
    
        @Override
        public void eat() {
            System.out.println("够吃骨头");
            
        }

    Penguin

    public class Penguin extends Pet {
    
        @Override
        public void eat() {
            System.out.println("企鹅吃fish");
            
        }

    Master

    public class Master {
        //父类类型作为参数
    public void feed(Pet pet)
    {
        pet.eat();
        }
    }

    Test

      public static void main(String[] args) {
            Master master=new Master();
            
            Pet pet=new Dog();
            
            master.feed(pet);
    
        }

    二、子类到父类的转换(向上转型)

    规则:

    ① 将一个父类的引用指向一个子类对象,成为向上转型,自动进行类型转换

    ② 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

    ③ 通过父类引用变量无法调用子类特有的方法

    三、java中两种实现和使用多态的方式

    ① 使用父类作为方法形参

    ② 使用父类作为方法返回值

    四、父类到子类的转换(向下转型)

    将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型。此时必须进行强制类型转换

    五、instanceof运算符

    语法:

    对象 instanceof 类或接口

    该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false

    注:

      ① 使用instanceof运算符时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误

      ② instanceof通常和强制类型转换结合使用

    六、接口

    在java语言中,接口有两种意思:

    ①概念性的接口,即系统对外提供的所有服务

    ②指用interface关键字定义的接口,也称为接口类型

    定义:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合

    语法:

    【修饰符】 interface 接口名 extends 父接口1,夫接口2.......

           class 类名 extends 父类名 implements 接口1,接口2.......

    七、特征

    ① 接口中的成员变量默认都是public、static、final类型的,必须被显示初始化

    ②接口中的方法默认都是public、abstract类型的

    ③接口没有构造方法,不能被实例化

    ④一个接口不能实现另一个接口,但它可以继承多个其他接口

    ⑤接口必须通过类来实现它的抽象方法

    ⑥ 一个类只能继承一个直接父类,但能实现多个接口

    八、语法

      ① 修饰符 interface 接口名 extends 父接口1,父接口2....{

          //常量定义

          //方法定义

      }

      ② class 类名 extends 父类名 implements 接口1,接口2....{

          //类成员

      }

    一个小例子:

    使用java接口来模拟生活中的USB接口

    1、先定义USB接口,通过service()方法提供服务

    public interface Usbinterface{
    
    void service();
    }

    2、定义U盘类,实现USB接口中的service()方法,进行数据传输

    public class UDisk implementd UsbInterface{
    public void service()
    {
    System.out.println("连接USB口,开始数据传输!");
    
    }
    
    }

    3、定义USB风扇类,实现USB接口中的service()方法,获得电流使风扇转动

    public class UsbFan implementd UsbInterface{
    public void service()
    {
    System.out.println("连接USB口,获得电流,风扇开始转动!");
    
    }
    
    }

    4、编写测试类

    public class Test{
    public static void main(String[]args){
    //u盘
    UsbInterface uDisk=new UDisk();
    uDisk.service();
    
    //USB风扇
    UsbInterface usbFan=new UsbFan();
    usbFan.service();
    
    }
    
    }
  • 相关阅读:
    2006年百度之星程序设计大赛试题初赛题目题4剪刀石头布
    2006年百度之星程序设计大赛试题初赛题目题5座位调整
    Linux2.6用户空间堆栈区的分配与回收
    Linux2.6物理内存管理
    2006年百度之星程序设计大赛试题初赛题目题6百度语言翻译机
    带权的二分匹配
    二分图带权匹配KuhnMunkres算法(有修改)
    Linux2.6虚拟内存管理
    Linux2.6为数据结构分配内存slab
    2012225面试题目
  • 原文地址:https://www.cnblogs.com/Zhangmin123/p/5533059.html
Copyright © 2011-2022 走看看