• 抽象类和接口


    接口

    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

  • 相关阅读:
    自定义博客园样式
    Serilog 记录日志
    1 Python命令行参数(脚本神器)
    原创powershell脚本:通过远程桌面3389黑名单,阻止黑客ip
    在win中,给powershell客户端,搭建sshd服务器。
    分享我编写的powershell脚本:ssh-copy-id.ps1
    猪懂傻改之《powershell 代码规范》
    为啥没有操作系统托管的队列池?没有托管的账户?
    powershell脚本:你的文件已经被黑客篡改.ps1
    巧用linux版powershell,管理linux下docker的image,container
  • 原文地址:https://www.cnblogs.com/AmyZheng/p/9473299.html
Copyright © 2020-2023  润新知