• 技术文章 >Java >java教程

    详细了解Java接口和抽象类的区别

    黄舟黄舟2017-03-15 13:20:46原创777

    纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹


    接口,interface,接口泛指供别人调用的方法和函数

    接口的形式:

    public interface interfaceName
    {
            public static final   变量;
            void FunctionName(args);
    }

    接口的特点

    1)、接口中可以含有变量和方法。

    2)、其中变量被隐式的指定为public static final 变量并且只能是这种变量。

    3)、接口的方法隐式的指定为public abstract方法且只能是public abstract方法。

    4)、接口中的方法都不能有具体的实现,都是抽象方法,接口是一种极度抽象的类型。

    5)、一个类可以实现多个接口,只能继承一个抽象类

    6)、接口的方法在子类中必须被实现。

    简单示例:

    //声明一个接口
    interface Say {
        public void sayMessage();
    }
    //两个实现类
    class SayHello implements Say {
        public void sayMessage() {
            System.out.println("hello");
        }
    }
    class SayHi implements Say {
        public void sayMessage() {
            System.out.println("Hi");
        }
    }
    public class TestSay {
        public static void main(String[] args) {
            //同样都是用Say这个接口类型实例,却可以输出两个结果
            Say say = new SayHello();
            say.sayMessage();
            Say say1 = new SayHi();
            say1.sayMessage();
        }
    }

    抽象类:

    抽象类一般的定义是含有抽象方法的类,当然只是用abstract对类进行修饰,没有抽象方法那也是抽象类,但那样就没有太大的意义了。

    抽象类的形式:

    public abstract abstractName
    {
        abstract void function();
        其他的正常类发方法与变量;
    }

    抽象类的特点

    1)、抽象类不仅含有抽象方法,也可以和普通类一样有变量和普通方法。

    2)、抽象方法只能是public或者protected,因为抽象类是用来被继承的,private方法无意义。

    3)、抽象类不能用来创建对象,它是用来被继承的。

    4)、一个子类继承了抽象类必须要实现抽象类的抽象方法,否则这个子类也是抽象类。


    抽象类示例:

    public class Child extends Children{
        public Child(String name) {
            super(name);
        }
    
        public void printName() {
            System.out.println(super.getName());
        }
    
    
        public static void main(String[] args) {
            Child boy = new Child("Charley");
            System.out.println(boy.getName());
            Child girl = new Child("Queenie");
            girl.printName();
        }
    }
    
    abstract class Children {
        private String name;
    
        public Children(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        abstract void printName();
    }

    抽象类和接口的区别

    (1)抽象类可以有构造方法,接口内不能有构造方法

    (2)抽象类中可以有普通成员变量,接口中的变量都是public static final修饰的

    (3)抽象类中可以包含非抽象的普通方法,接口中的方法默认是抽象方法

    (4)抽象类中的抽象方法可以是public,protected、默认类型,接口中的抽象方法是public,默认是public abstract类型

    (5)抽象类中可以有静态方法,接口中不包含静态方法

    (6)抽象类和接口中都可以有静态成员变量,抽象类中的静态成员变量可以是任意访问类型的,接口中的静态成员变量只能是public static

    (7)一个类可以实现多个接口,但只能继承一个抽象类

    以上就是详细了解Java接口和抽象类的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java虚拟机的具体详解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Java RabbitMQ高级特性实例分析• PHP和Java des的加密解密实例分析• 怎么使用Java实现先查询缓存再查询数据库• java如何使用Byte数组反转字符• Java的package包怎么用
    1/1

    PHP中文网