zoukankan      html  css  js  c++  java
  • Java接口

    Java接口

    创建抽象类是为了希望通过这个接口操作一系列类。

    抽象方法:仅有声明而没有方法体

    abstract void f();

    包括抽象方法的类叫做抽象类。

    假设从一个抽象类继承,并想创建该新类的对象,那么就必须为基类中的全部抽象方法提供方法定义。

    假设不这样做。导出类便也是抽象类。


    interfacekeyword使抽象的概念更向前迈进了一步。

    interface这个keyword产生一个全然抽象的类,它根本没有提供不论什么详细的实现。它同意创建者确定方法名。參数列表,返回类型,可是没有不论什么方法体。

    接口仅仅提供了形式,并未提供不论什么详细实现。

    一个接口表示:全部实现了该特定接口的类看起来都应该是这个样子的。

    要想一个类遵循某个特定接口,须要使用implementskeyword。

    import java.util.*;
    
    enum Node{
    	MIDDLE_C,C_SHARP,B_FLAT
    }
    
    interface Instructment{
    	public void play(Node n);
    	public void adjust();
    }
    
    class Winds implements Instructment{
    	public void play(Node n){
    		System.out.println(this+".play() "+n);
    	}
    	public String toString(){
    		return "Winds";
    	}
    	public void adjust(){
    		System.out.println(this+".adjust()");
    	}
    }
    
     class Percussion implements Instructment{
    	 public void play(Node n){
    		 System.out.println(this+".play() "+n);
    	 }   
    	 public String toString(){
    		 return "Percussion";
    	 }
    	 public void adjust(){
    		 System.out.println(this+".adjust()");
    	 }
     }
    
     class Stringed implements Instructment{
    	 public void play(Node n){
    		 System.out.println(this+".play() "+n);
    	 }   
    	 public String toString(){
    		 return "Stringed";
    	 }
    	 public void adjust()
    	 {
    		 System.out.println(this+".adjust()");
    	 }
     }
    
     class Brass extends Winds{
    	 public String toString(){
    		 return "Brass";
    	 }
    }
    
     class WoodWinds extends Winds{
    	 public String toString(){
    		 return "WoodWinds";
    	 }
     }
    
    public class Music2{
    	public static void tune(Instructment i){
    		i.play(Node.MIDDLE_C);
    	}
    	
    	static void tuneAll(Instructment[] e){
    		for(Instructment i:e)
    			tune(i);
    	}
    
    	public static void main(String[] args){
    		Instructment[] e={
    			new Winds(),
    			new Percussion(),
    			new Stringed(),
    			new Brass(),
    			new WoodWinds()
    			};
    		tuneAll(e);
    	}
    }
    

    多重继承:假设要从一个非接口的类继承,那么仅仅能从一个类继承,其余的基元素都必须是接口。须要将全部的接口名都置于implementskeyword之后。用逗号将它们一一隔开。

    能够继承随意多个接口,并能够向上转型为每一个接口。由于每一个接口都是一个独立的类型。

    import java.util.*;
    
    interface CanFight{
    	void fight();
    }
    
    interface CanSwim{
    	void swim();
    }
    
    interface CanFly{
    	void fly();
    }
    
    class ActionCharacter{
    	public void fight(){
    		System.out.println("Fight");
    	}
    }
    
    class Hero extends ActionCharacter
    	implements CanFight,CanSwim,CanFly{
    		public void swim(){
    			System.out.println("Swim");
    		}
    		public void fly(){
    			System.out.println("Fly");
    		}
    	}
    
    public class Adventure{
    	public static void t(CanFight x){
    		x.fight();
    	}
    
    	public static void u(CanSwim x){
    		x.swim();
    	}
    
    	public static void v(CanFly x){
    		x.fly();
    	}
    
    	public static void w(ActionCharacter x){
    		x.fight();
    	}
    
    	public static void main(String[] args){
    		Hero h=new Hero();
    		t(h);
    		u(h);
    		v(h);
    		w(h);
    	}
    }
    


  • 相关阅读:
    全局函数和静态函数
    C语言变量总结
    #ifdef、#ifndef 与 #endif
    #include与#define的意义
    exit
    字符常量
    void *:万能指针
    算法(Algorithms)第4版 练习 链表类 1.3.19~1.3.29
    算法(Algorithms)第4版 练习 1.3.219
    算法(Algorithms)第4版 练习 1.3.20
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7191439.html
Copyright © 2011-2022 走看看