• Java基础-四要素之一《抽象》(接口)


    抽象的概念就是抽象出共同属性:成员变量和方法

    定义抽象使用abstract关键字定义抽象类和方法

    抽象类 abstract class
     包含抽象方法的类,叫抽象类。

    所以抽象类可以有private等多种权限的成员变量和非abstract的成员方法。当然抽象方法是一定要有的

    抽象类是用于单一继承的,不能实例化

      而继承类一定要实现抽象方法,因为抽象方法在抽象类里是没有实现行为的,访问权限只能是public。而非抽象方法则可以赋予方法的默认行为,访问权限可以多种,但需要考虑非抽象方法是否需要被继承类访问。

    接口 interface 
      接口,用于多重继承,也不能实例化。只能包含static final的成员变量,不过在interface中一般不定义成员变量。而成员方法在接口里只能是抽象方法,访问权限只能是public。

     所以,无论抽象类还是接口,抽象方法都需要在子类中实现,而且在子类中实现这些方法一个都不能少。而抽象类里面的非抽象方法,则在子类可以不重写实现里面的行为

    public class Child extends Children implements Lover{ 
        public Child(String name) { 
            super(name); 
        } 
     
        public void printName() { 
            System.out.println(super.getName()); 
        } 
     
        public void love(String name) { 
            System.out.println(name + ", I love you!"); 
        } 
     
        public static void main(String[] args) { 
            Child boy = new Child("Charley"); 
            System.out.println(boy.getName()); 
     
            Child girl = new Child("Queenie"); 
            girl.printName(); 
     
            boy.love(girl.getName()); 
            girl.love(boy.getName()); 
        } 
    } 
     
    abstract class Children { 
        private String name; 
     
        public Children(String name) { 
            this.name = name; 
        } 
     
        //private then Child obj can not access this method 
        //private String getName() { 
        public String getName() { 
            return name; 
        } 
     
        abstract void printName(); 
     
        //haha()在子类中没有被实现 
        //abstract void haha(); 
    } 
     
    interface Lover{ 
        void love(String name); 
    } 

     Java接口和Java抽象类的区别

       1,抽象类里可以有构造方法,而接口内不能有构造方法。
       2,抽象类中可以有普通成员变量,而接口中不能有普通成员变量。
    public String pas ;//接口中定义会报错
       3,抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。
       4,抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
       5,抽象类中可以包含静态方法,接口内不能包含静态方法。
       6,抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public  static类型,并且默认为public static类型。
       7,一个类可以实现多个接口,但只能继承一个抽象类。

    在应用上的区别:

         接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码的重用

  • 相关阅读:
    SQLSERVER 数据连接字符串
    c#中 间隔两个小时执行一次
    移动开发者的自学宝典:十大在线编程学习网站
    C#j将DataTable转换成List
    C#将list转换为datatable
    SQL Server 高性能写入 摘抄
    解决控制面板删除不了的程序卸载
    卸载SQL 2008 R2 出现警告26003
    删除重复数据
    大数据量数据优化
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4491384.html
Copyright © 2020-2023  润新知