java中接口中成员的定义

java中的接口的作用是提供编程框架,它作为统一的规范让其他类进行扩展,是java中非常优秀的设计。

这娃用以下代码总结了java中接口可以定义的成员以及它们默认被修饰的关键字:

//外部接口的访问修饰符只能是public或默认修饰符 ,并且它的成员只能用public访问修饰符修饰, 接口不能用final修饰
public interface A {
    //成员变量,默认用public static final 修饰
    String name="ahei";        

    //成员方法,默认用public abstract 修饰
    void abstractMethod();                

    //内部接口,默认用public static 修饰
    interface Interf{}

    //内部类,默认用public static 修饰
    class InnerClass{}

    //静态方法,默认用public修饰,接口中的静态方法不能用final修饰
    static void staticMethod(){}

    //默认方法,可提供方法实现,作为库、框架向前兼容的手段
    default void defaultMethod(){
        System.out.println("haha");
    }

    public static void main(String[] args){
        //以下说明接口中的类成员和接口成员都是默认用static修饰的
        new A.Interf() {
        };
        new A.InnerClass();

        //静态方法的调用在编译期就已经确定,由声明的类型决定
        C c=new D();
        c.set();   //输出C

        //默认方法通过对象调用
        new F().defaultMethod();
    }
}

//静态方法也能重写,不过它们属于各自的类,不会有运行时多态
class C {
    static void set() {
        System.out.println("C");
    }
}

class D extends C {
    static void set() {
        System.out.println("D");
    }
}

class F implements A{
    @Override
    public void abstractMethod() {}
}

java的接口中还可以定义枚举类,并且接口中的静态方法和默认方法是java8新增的,默认方法可为接口提供新的功能,并且不影响老版本代码的实现,保证了向前兼容。

时间: 2024-10-10 06:00:10

java中接口中成员的定义的相关文章

java 子接口中定义与父接口相同的方法

今天碰到一个很有意思的问题,在java中如果子接口中定义了与父接口中已经有的方法会发生什么事情呢?比如: interface IRunnable extends Runnable{ void run(); } 刚开始我还以为这样子的语法应该不能通过编译器,没有想到这样子做编译器并没有做出任何警告. 当然大多数情况下我们都不会这么做,因为这样做似乎没有什么意义.但为了真相,我还是做了个小实现: public class InterfaceDebug{ public static void main

Java 8——接口中个的默认方法和静态方法

在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静态行为. 一.为什么? java迭代了如此多的版本且主要采用的都是演化的思想而非重构(为了保证与历史的兼容性). 这样就容易出现很多比较难以处理的问题,接口在发布之后就已经被定型,除非我们能够一次性更新所有该接口的实现.比如某个历史接口有很多实现,需要在历史接口中增加一个行为,那么久需要在它的所有实

java List接口中常用类

Vector:线程安全,但速度慢,已被ArrayList替代. ArrayList:线程不安全,查询速度快. LinkedList:链表结构,增删速度快.取出List集合中元素的方式: get(int  index):通过脚标获取元素. iterator():通过迭代方法获取迭代器对象. ArrayList和Vector类都是基于数组实现的List类,Vector比较古老,被ArrayList取代了; ArrayList是线程不安全的,而Vector是线程安全的,但是即使这样,也不推荐使用Vec

在 java 开发接口中需要注意的问题

1 在开发过程中免不了对接上游或下游,有合作就要保证入参.出参的准确性.一个接口一般只能处理有限情况下的情况,因此在逻辑处理前要对入参进行校验. 2 在自己的逻辑处理过程中,要时刻持有怀疑的态度.假设每一步骤出问题了,在生产上如何快速的捕获问题所在.此时,就显露出日志的重要性了!!!在必要的地点一定打日志.对于异常记录,一定要记录堆栈信息,方便日后查找问题. 原文地址:https://www.cnblogs.com/zhaopengcheng/p/10593387.html

Java中接口里定义的成员变量

首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public static final 的.所以你可以这样写: public static final int i=10; 或则 int i=10;(可以省略掉一部分) 注意在声明的时候要给变量赋予初值 解释: 首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,

java接口中定义成员变量

//抽象类中可以定义如下成员变量:public abstract class People { public String name; public int age; public abstract void work(); } 而如下截图中的People接口中,定义成员变量报错: 接口的含义理解:接口可以理解成统一的"协议",而接口中的属性也属于协议中的内容;但是接口的属性都是公共的,静态的,最终的 接口的成员特点: A:成员变量 只能是常量.默认修饰符 public static

Java接口中的成员变量的意义

转自:http://blog.csdn.net/ameyume/article/details/6189749 在interface里面的变量都是public static final 的.所以你可以这样写:public static final int i=10;或则int i=10:(可以省略掉一部分) 注意在声明的时候要给变量赋予初值 解释: 首先你要弄清接口的含义.接口就是提供一种统一的'协议',而接口中的属性也属于'协议'中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.抽象

java接口中成员变量和方法的默认修饰符(转)

Java的interface中,成员变量的默认修饰符为:public static final 所以我们在interface中定义成员变量的时候,可以 1:public static final String name = "张三"; 2:String name = "张三"; 以上两种都可以,老司机一般都是第二种.既然是静态最终的变量,也就意味着在外面访问的时候不能修改这个成员变量的值.所以在接口中定义成员变量的,一般都是常量.不会修改的.如果要进行修改的话,定义

Java中接口(Interface)的定义和使用

有关 Java 中接口的使用相信程序员们都知道,但是你们知不知道接口到底有什么用呢?毫无疑问,接口的重要性远比想象中重要.接下来我们便一起来学习Java中接口使用. Java接口是什么 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口(英语:Interface),在JAVA编程语言中是一个抽象类型(Abstract Type),它被用来要求类(Class)必须实现指