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

  • 相关阅读:
    ZCMU训练赛-H(模拟)
    ZCMU训练赛-B(dp/暴力)
    ZCMU训练赛-A(模拟)
    HDU 2045 LELE的RPG难题(递推)
    HDU 2044 一只小蜜蜂(递归)
    HDU 2050 折线分割平面(转)
    对递归的理解归纳(转)
    漫谈递归思想(转)
    2017中南大学暑期集训day1 : debug&STL-A
    探寻宝藏--河南省第六届大学生程序设计竞赛
  • 原文地址:https://www.cnblogs.com/AmyZheng/p/9473299.html
Copyright © 2011-2022 走看看