码迷,mamicode.com
首页 > 编程语言 > 详细

java接口和抽象类的简单理解

时间:2019-01-30 17:09:30      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:method   override   统一   修饰符   blank   may   快速开发   快速   常量   

        接口:

       (1)接口内定义的变量都是public static final类型的,无论是否显示限定这些修饰符,且必须要被显式初始化,否则报错:

public interface Interface1 {
    /**
     * VARIABLE1显式添加public static final修饰符
     * VARIABLE2隐式含有public static final修饰符
     */
    public static final String VARIABLE1="AAA";
                        String VARIABLE2="BBB";
    
    /**
     * VARIABLE3未显式初始化,代码变异报错:
     * The blank final field VARIABLE3 may not have been initialized
     */
    String VARIABLE3;                    
}

        (2)接口内定义的方法都是抽象方法,即不包含任何方法实现

            a.如果实现接口的类是普通类(非抽象类),则要实现该接口的所有方法,否则编译报错;

            b.如果实现接口的类是抽象类,则可以只实现该接口的部分方法,否则抛出异常;

public interface Interface2 {
    /**
     * method1方法定义显式添加public abstract修饰符
     * method2方法隐式含有public abstract修饰符,两个方法都是抽象方法
     */
    public abstract String method1();
                    String method2();
}
/**
 * 普通类Class1实现Interface2接口,必须实现所有接口方法
 *
 */
public class Class1 implements Interface2 {

    @Override
    public String method1() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String method2() {
        // TODO Auto-generated method stub
        return null;
    }

}
/**
 * 抽象类Class2实现Interface2接口,可以只实现方法method1
 */
public abstract class Class2 implements Interface2 {

    @Override
    public String method1() {
        // TODO Auto-generated method stub
        return null;
    }

}

    抽象类:

       (1)抽象类也是类,跟一般类一样可以有普通的变量、带实现的方法,可以有构造函数,但不能被实例化,只能用来继承

         普通方法必须带方法体,抽象方法不能带方法体;

public abstract class AbstractClass1 {
    String variable1;//普通变量
    public static final String VARIABLE2="AAA";//定义静态常量
    public void method1(){  }//普通方法,必须有方法体
    abstract void method2();//抽象方法,不能有方法体
    
    AbstractClass1(){//可以定义构造函数,但抽象类不能实例化,只能被继承
        System.out.println("此为构造函数");
    }
}

       接口和抽象类还有一个最大的不同,一个类可以实现多个接口,但只能继承一个类

       在实际应用中,接口是最为常用的,如果多个接口的实现有公共的部分,则可以考虑将这部分内容提取到抽象类中,然后继承该抽象类。也就是说,抽象类提供公共方法的实现,可以快速开发且统一管理,又允许你的类完全实现自己的所有方法,不会出现紧耦合的问题。

 

java接口和抽象类的简单理解

标签:method   override   统一   修饰符   blank   may   快速开发   快速   常量   

原文地址:https://www.cnblogs.com/qihangyangfan/p/10338603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!