• 修饰符及接口和内部类


    java有3类修饰符:static finaly abstract

    static

    在类中,使用static修饰的成员变量,就是静态变量,反之为非静态变量。

    final

    1. final修饰的类不能被继承,没有子类

      例如:我们是无法写一个类去继承String类,
      然后对String类型扩展的,因为API中已经被String类定义为final
      的了
      2. 用final修饰的方法可以被继承,但是不能被子类的重写。

      1. 用final修饰的变量表示常量,只能被赋一次值.其实使用final修饰的变量也就成了常量了,因为值不会再变
        了。

    abstract

    abstract修饰符可以用来修饰方法也可以修饰类
    * 如果修饰方法,那么该方法就是抽象方法;
    * 如果修饰类,那么该类就是抽象类。
    * 抽象类和抽象方法的关系
    * 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。
    * 声明类的同时,加上abstract修饰符就是抽象类
    声明方法的时候,加上abstract修饰符,并且去掉方法的大口号,同时结尾加上分号,该方法就是抽象方法

    抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。
    抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。
    注:子类继承抽象类后,需要实现抽象类中没有实现的抽象方法,否则这个子类也要声明为抽象类。
    

    为什么需要接口?接口和抽象类的区别

    接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
    抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面
    向规范的,规定了一批类具有的公共方法规范。
    从接口的实现者角度看,接口定义了可以向外部提供的服务。
    从接口的调用者角度看,接口定义了实现者能提供那些服务。
    接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的系统之间模块之间的接口定义
    好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。大家在工作以后,做系
    统时往往就是使用“面向接口”的思想来设计系统。

    接口的本质

    接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你是天
    使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则
    必须欺负好人。
    接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。
    OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具
    备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合
    理的去抽象。

    接口和抽象类的区别

    抽象类也是类,除了可以写抽象方法以及不能直接new对象之外,其他的和普通类没有什么不一样的。接
    口已经另一种类型了,和类是有本质的区别的,所以不能用类的标准去衡量接口。
    声明类的关键字是class,声明接口的关键字是interface。
    抽象类是用来被继承的,java中的类是单继承。
    类A继承了抽象类B,那么类A的对象就属于B类型了,可以使用多态
    一个父类的引用,可以指向这个父类的任意子类对象
    注:继承的关键字是extends
    接口是用来被类实现的,java中的接口可以被多实现。
    类A实现接口B、C、D、E..,那么类A的对象就属于B、C、D、E等类型了,可以使用多态
    一个接口的引用,可以指向这个接口的任意实现类对象
    注:实现的关键字是implements



    接口中的方法都是抽象方法

       public interface Action{
    public abstract void run();
    //默认就是public abstract修饰的
    void test();
    public void go();
    }
    
     ### 接口中的变量都是静态常量
    
          注:可以直接使用接口名访问其属性。因为是public static修饰的
    注:声明的同时就必须赋值.(因为接口中不能编写静态代码块)
    public interface Action{
    public static final String NAME = "tom";
    //默认就是public static final修饰的
    int AGE = 20;
    }
    main:
    System.out.println(Action.NAME);
    System.out.println(Action.AGE);
    
    
      ###  一个类可以实现多个接口
    
          public class Student implements A,B,C,D{
    //Student需要实现接口A B C D中所有的抽象方法
    //否则Student类就要声明为抽象类,因为有抽象方法没实现
    }
    main:
    A s1 = new Student();
    B s2 = new Student();
    C s3 = new Student();
    D s4 = new Student();
    
    ### 一个接口可以继承多个父接口
    
    ###  接口的作用
    

    接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建
    【接口名】 【对象名】= new 【实现接口的类】
    这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码。
    假如我们两个类中都有个function()的方法,如果我用接口,那样我new a();就是用a的方法,new
    b()就是用b的方法
    这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同

     ###  内部类就是在一个类中在编写另外一个类
    
      ### 内部类分为四种:
    
    1. 成员内部类
    2. 静态内部类
    3. 局部内部类
    4. 匿名内部类

    后面接口,内部类详细的情况请看狂神说的java讲解 第6节面向对象

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    C++学习004-Go To 语句使用
    C++学习003-#define 自定义宏
    C++学习002-C++代码中插入汇编语句
    C++学习001-注释
    Qt 加载Leap motion 手势识别软件 二次开发 hello world
    C++知识点 内存占用问题
    虚拟现实-VR-UE4-编译源代码后,无法运行
    Loadrunner|录制脚本时出现乱码的解决方式
    2月14日学习内容
    构建之法读后感(三)
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15105130.html
Copyright © 2020-2023  润新知