zoukankan      html  css  js  c++  java
  • Java 抽象类 接口

    抽象
    抽象方法定义的格式:
    public abstract 返回值类型 方法名(参数);
    抽象类定义的格式:
    abstract class 类名 {
    }

    public abstract class Fu {//抽象类
    	public abstract void work();//抽象方法
    	public void eat() {//抽象类可以放普通类
    		System.out.println("吃饭");
    	}
    }
    
    public class Zi extends Fu{
    	public void work() {
    		System.out.println("java工程师在工作");
    	}
    }
    
    public class Zi2 extends Fu{
    	public void work() {
    		System.out.println("Android工程师在工作");
    	}
    }
    

      

    特点
    1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
    2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
    3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
    注意
    1、抽象类一定是个父类 因为不断抽取而来的。
    2、抽象类中可以定义普通方法。那这个抽象类的存在的意义是不让该类创建对象,方法可以直接让子类去使用
    3、abstract 不能和 private(矛盾) 、final(常量) 、 static 一起用

    接口

    接口是功能的集合
    接口只描述所应该具备的方法,并没有具体实现
    这样将功能的定义与实现分离,优化了程序设计
    接口定义时需要使用interface关键字
    定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件
    定义格式:
    public interface 接口名 {
    抽象方法1;
    抽象方法2;
    抽象方法3;
    }
    接口中的方法均为公共访问的抽象方法
    接口中无法定义普通的成员变量
    类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements
    格式
    class 类 implements 接口 {
        重写接口中方法
    }
    接口中成员的特点
    1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。后面我们会讲解static与final关键字
    2、接口中可以定义方法,方法也有固定的修饰符,public abstract
    3、接口不可以创建对象。
    4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。
    接口的多实现

    public interface Fu {
    	public abstract void work();
    }
    
    public interface Zi {
    	public abstract void eat();
    
    }
    
    public class Zi2 implements Fu,Zi{
    
    	public void eat() {
    		
    	}
    
    	public void work() {
    		
    	}
    	
    }
    

     
    类继承类并实现接口

    public abstract class Fu {//抽象类
    	public abstract void work();//抽象方法
    }
    
    public interface Zi {
    	public abstract void eat();
    
    }
    
    public class Zi2 extends Fu implements Zi{
    
    	public void eat() {
    		
    	}
    
    	public void work() {
    		
    	}
    	
    }
    

     
    接口的多继承

    public interface Fu {//抽象类
    	public abstract void work();//抽象方法
    	
    }
    
    public interface Zi{
    	public abstract void eat(); 
    }
    
    public interface Zi2 extends Fu,Zi{
    	public abstract void sleep();
    }
    

     抽象类与接口的区别
    1.抽象类中可以有普通成员变量,接口中没有普通成员变量
    2.抽象类可以有构造方法,接口中不能有构造方法
    3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
    4. 抽象类中可以包含静态方法,接口中不能包含静态方法
    5. 抽象类中的抽象方法的访问类型可以是 public,protected ,
    但接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型
    6. 一个类可以实现多个接口,但只能继承一个抽象类。
    7. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
    但接口中定义的变量只是public static final 类型,并且默认即为 public static final 类型。

    应用

    //定义抽象狗类
    public abstract class Dog {
    	public abstract void eat();
    	public abstract void wang();
    }
    //定义缉毒接口
    public interface Look {
    	public void look();
    }
    //定义缉毒狗
    public class Jd_Dog extends Dog implements Look{
    	public void eat() {
    		System.out.println("能吃");
    	}
    	public void wang() {
    		System.out.println("能汪汪叫");
    	}
    	public void look() {
    		System.out.println("找毒品");
    	}
    }
    

     

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/cgj1994/p/9700139.html
Copyright © 2011-2022 走看看