• Java 抽象类与接口


    一、抽象类

    在Java语言中,使用 abstract  class 来定义抽象类:

    /**
     * 定义一个抽象类
     * @author Administrator
     *
     */
    public abstract class Demo {
    
    }
    • 尽管Demo类是抽象类,但是它仍然可以有成员变量,成员方法和构造方法
    • 抽象类不能被实例化
    • 抽象类可以被继承

    抽象方法:

      使用abstract 来声明抽象方法,抽象方法只包含一个方法名。且没有方法体。

    声明抽象方法会造成以下两个结果:

    • 如果一个类包含抽象方法,那么该类必须是抽象类。
    • 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

    继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象

     

    /**
     * 定义一个抽象类
     * @author Administrator
     *
     */
    public abstract class Demo {
        
        public String name;        //抽象类中的成员变量
        public String sex;
        public int age;
        
        /**
         * 抽象类的构造方法
         */
        public Demo(){
            
        }
        
        /**
         * 抽象类中的成员方法
         */
        public void fun(){
            System.out.println("我是抽象类中的成员方法");
        }
        
        /**
         *     抽象方法
         *     使用abstract声明
         *     没有方法体
         */
        public abstract void funtion();
    }    

    抽象类总结规定:

      1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过,只有抽象类的非抽象子类可以创建对象。

      2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

      3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

      4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

      5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类

    二、接口

    接口定义的语法格式如下:

      [访问控制修饰符] interface 接口名 [ extends 接口列表]{

        常量

        抽象方法

      }

    /**
     * 定义一个借口
     * @author Administrator
     *
     */
    public interface Interface {
        
            public String name = "abc";        //接口中的常量
            public int age = 18;
            
            /**
             *     接口中的抽象方法
             *     接口中定义抽象方法可以不写abstract
             */
            public void fun();
    }

     访问控制修饰符的要求与类的一致,只能使用public和default(在使用default时,访问控制修饰符不填写)

    •   使用public进行修饰表示该接口为公共接口,可以被任意一个类所使用
    •   不加访问控制修饰符进行修饰则表示此接口为友好接口,友好接口只能被同一个包中的类所使用

     interface为关键字,只有使用了interface,程序才认为这是接口

     接口名同标识符

      接口也是可以继承的,其语法与类的继承是一样的

      与类继承的区别在于一个接口可以有多个父接口,这些父接口之间用逗号“ , ”隔开,形成父接口列表

    接口的特性:

    •   接口不可以被实例化
    •   实现类必须实现接口的所有方法
    •   实现类可以实现多个接口
    •   接口中的变量都是静态常量

    接口的作用:

    •   接口的主要作用就是将程序中的“ 实现什么功能 ” 和 “ 怎么实现功能 ” 这两个概念分离开,这样编写出来的程序是可以拆分的,增强了程序的可维护性
    •   另一个作用主要体现在团队合作上,准确的进行项目的开发

     三、关键字final

    final 可以用来修饰类,变量,方法  

      final 修饰的类不能有子类,也不能被继承

      final 修饰的变量是一个常量,不能重新赋值,且定义时必须赋值

      final 修饰的方法不能重写

    /**
     * final 修饰类
     * @author Administrator
     *
     */
    public final class Abc {
        
        public final String name = "sunny";        //final 修饰变量
        public final int age = 18;
        
        /**
         * final修饰方法
         */
        public final void fun(){
            
        }
    }
  • 相关阅读:
    數據從一個DB寫入另外一個DB
    js 控制下拉菜單的刷新
    Ajax 加載數據庫中的圖片
    Win7 註冊表 刪除登陸帳號
    產生隨機數
    借助AjaxControlToolkit实现百度搜索时的下拉列表提示
    解决"Windows 安装程序不允许从远程桌面连接安装"
    中文转换成数字金额C#【转】
    让你的Visual Studio 2010自动添加头部注释信息【转】
    C# 图片识别(支持21种语言)【转】
  • 原文地址:https://www.cnblogs.com/sloth-007/p/10639085.html
Copyright © 2020-2023  润新知