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

    接口

    1、特点

    • 接口可以继承多个接口
    • 接口里只能声明常量,不能声明构造函数
    • 接口中的方法默认为public abstract,属性默认为public static final
    • 接口中的方法只能被public,abstract,default,static,strictfp修饰
    • 接口中的方法不能非法组合,声明中只能有abstract, default,static其中一个
    • 接口中的方法被static和default修饰时要有方法体
    • 接口中的抽象方法不能被strictfp修饰
    • 一个接口可以有多个静态方法和default方法,没有个数限制
    • 接口中定义的抽象方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法 则实现类需要定义为抽象类

    2、测试类

    package ecut.test;
    
    import java.io.Serializable;
    import java.util.Comparator;
    
    public interface test extends Serializable,Comparator<test>{
        //接口中的属性默认为public static final
        public static final int a=1;
        //接口不能有构造方法
        //public test(){}
        //默认的修饰时public abstract
        public abstract void test1();
        //接口中的方法不能非法组合,声明中只能有abstract, default, static其中一个
        //接口中的方法只能被public, abstract, default, static, strictfp修饰
        public static  void test2(){
            System.out.println("jdk1.8中,接口中的方法可以被static修饰");
        }
        public default  void test3(){
            System.out.println("jdk1.8中,接口中的方法可以被default修饰");
        }
        //接口中的抽象方法不能被strictfp修饰
        //public abstract strictfp void test4();
        public default strictfp void test5(){};
        public static strictfp void test6(){};    
        
    }

     抽象类

    1、特点

    • 抽象类可以定义成员变量
    • 抽象类可以有构造,只不过不能new
    • 抽象类中的成员可以被public、protected、默认、private修饰
    • 抽象类不一定需要抽象方法,有抽象方法的类得声明为抽象类
    • 抽象类中可以有静态方法
    • 抽象类中的抽象方法不能被strictfp修饰
    • 抽象类中不一定要有抽象方法,但是有抽象方法的类需要定义为抽象类
    • 抽象类中定义的抽象方法都需要子类来实现,如果子类不能实现类中的所有的抽象方法 则实现类需要定义为抽象类

    2、测试类

    package ecut.test;
    public
    abstract class test { //抽象类中可以定义成员变量 public int a1; protected int a2; int a3; private int a4; //抽象类可以有构造,只不过不能new public test(){} //抽象类中的成员可以被public、protected、默认、private修饰 public void test1() {} protected void test2(){} //类内或者同包才可以访问 void test3(){} private void test4(){} //抽象类不一定需要抽象方法,有抽象方法的类得声明为抽象类 public abstract void test5(); protected abstract void test6(); abstract void test7(); //抽象方法不能被private修饰 //private abstract void test8(); //抽象类中可以有静态方法 public static strictfp void test9(){} protected static strictfp void test10(){} static strictfp void test11(){} private static strictfp void test12(){} }

    接口和抽象类的区别

    1、接口中的成员变量都是常量,无论如何写都是public static final 修饰

    2、接口中不能有构造方法,但是抽象类中可以有构造方法,只是不能new

    3、接口中的方法和属性都只能用public修饰,但是抽象类可以用public、protected、默认、private修饰

    4、接口中的方法可以被default修饰,抽象类不可以

    5、接口可以多继承,抽象类不可以

    6、接口内部不能有静态代码块,抽象类可以有静态代码块

    接口和抽象类的相同点

    1、抽象类和接口都不可以被实例化

    2、抽象类和接口中的抽象方法需要实现,不让需要定义为抽象类

    3、抽象类和接口都可以有静态方法

    转载请于明显处标明出处

    https://www.cnblogs.com/AmyZheng/p/9473299.html

  • 相关阅读:
    VS2010不能引用System.Data.OracleClient解决方法(转)
    stdafx.h的作用(转载)
    生成缩略图
    java 泛型 入门
    itext库产生word文档示例(.doc)
    json(在JSP中) 应用实例
    C/C++ 指针应用 常见问题
    Java RTTI 和 反射机制
    Hibernate DAO类三个函数:merge() attachDirty() attachClean()
    HTTPSession 简介
  • 原文地址:https://www.cnblogs.com/AmyZheng/p/9473299.html
Copyright © 2011-2022 走看看