• 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("找毒品");
    	}
    }
    

     

  • 相关阅读:
    MarkDown学习记录
    AngularJS+Ionic开发-2.项目结构介绍
    【二分+贪心+倍增】【NOIP2012】疫情控制
    【考试总结】NOIP模拟 test11-1
    【考试总结】NOIP模拟 test10-27
    【考试总结】AHSOFNU&QZQZ test10-25
    【差分+二分答案】【NOIP2012】借教室
    【动态规划】【NOIP2015】子串
    【高精度+贪心】【NOIP2012】国王游戏
    ICPC Central Russia Regional Contest (CRRC 19)题解
  • 原文地址:https://www.cnblogs.com/cgj1994/p/9700139.html
Copyright © 2020-2023  润新知