一、static

  1、属性:类变量 定义在类以内,方法以外,全类有效,全类公共一个属性

     类变量与创建对象无关,有默认值0

     使用方式  类名.类变量     System.out.println();

     作用:计数器   生成id

      class User{

        static int count;

        public User(){

          count++;

        }

      }

      Class Account{

        long id;

        static long num = 10000L;

        public Account(){

             id = num++;

        }

      }

      public class TestStatic{

        public static void main(String[] args){

          new User();

          new User();

          new User();

        System.out.println(User.cout);

        Account a1 = new Account();

        Account a2 = new Account();

        System.out.println(a1.id);

        System.out.pringln(a2.id);

      }

  }

/*

new Account();           调用构造方法 给id属性赋值   id  10000L   num++  10001L

new Account();     id 10001L  num++   10002L

                    id           10002L num++

*/

 2、方法:静态方法

      加了static的普通方法,工具方法,全类共用一个功能

      自己定义静态方法的可能性不大,一般都是使用jdk中写好的静态方法

      使用方式:类名.静态方法名称()    Math.sqrt();

      注意:

      1》覆盖  方法名,返回值,参数表一样。修饰符和父类一样或者比父类的更宽泛

      2》静态方法只能被静态方法覆盖,并且没有多态,

        引用类型是什么类型,调用的就是什么类型的方法

  3、初始化代码块   

    静态初始化代码库

    作用:给静态属性赋值

    类加载时被执行一次,只有一次

    类加载:在虚拟机第一次使用一个类的时候,需要类的相关信息加载到内存中并保存起来的过程

    类加载时,初始化静态属性,执行静态初始化代码块

    类加载时机:

      new对象进行类加载,访问静态成员,子类对象类加载触发父类对象先类加载

二、final  最终的,最后的

  变量:  常量 不能修改变量中存储的值   (基本类型值不能变,引用类型地址不能变)

      final修饰实例变量和类变量时没有默认值,需要手动赋值

      实例变量 构造方法赋值或者初始值

      类变量  初始值或者静态初始化代码块里赋值

      public static final   好伙伴

  方法: 不能被覆盖(可继承,可调用,可重载)

  类:   不能被继承

三、abstract   抽象的(约束多态语法的正确使用)

  类 不能new对象

  方法   没有实现部分  只有声明部分

  注意:有抽象方法的类一定是抽象类

     子类继承抽象类,要么选择把所有的抽象方法都实现,

     如果没有实现相应的抽象方法,要求该类也必须是抽象类

接口

  语法:

   特殊的抽象类,为多态服务,只能声明引用,不能new对象

  关键字 interface

  实现接口(继承抽象类一样) implements

  所有属性 public static final(默认)

  所有方法 public abstract(默认)

  没有构造方法

作用:

  支持多继承

    接口和接口直接多继承  extends

    类和接口直接多继承     implements

    注意:一个类只能继承一个父类,可以实现多个接口(降耦合工具)

标准:(多态)
    接口回调:在定义了接口之后,现有的接口使用者,然后在定义接口的实现者

====================================================

===============接口和抽象类的区别============================================================

  1. 抽象类和接口的相同点

      ①.在java语言中,接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承。

      ②.接口和抽象类都可以包含抽象方法。

      ③.实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

  1. 抽象类和接口的不同点

      1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

      2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

      3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

      4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

      5)接口里不能定义静态方法;抽象类里可以定义静态方法。

      6)接口里不包含构造器,抽象类可以包含构造器。抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。接口里不能定义任何构

        造方法,系统也不会提供默认构造方法。

      7)接口里不能包含初始化块,但抽象类可以包含初始化块。

  1. 应用(适配器模式)

  目的:

    将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

  原理:

    目标接口(Target):客户所期待的接口。

    需要适配的类(Adaptee):需要适配的类或适配者类。

    适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

    

    实例:

       如果一个普通类要实现一个接口,则要覆盖此接口中的所有抽象方法。如果一个接口中定义的方法过多,但是在子类中又用不到这么多的抽象方法 ,则肯定很麻烦,所以此时需

    要一个中间的过度,但是过度类又不希望被直接使用,所以将此过度类定义成抽象类最合适(适配器),并在此抽象类中实现接口中的所有方法,方法体为空,则以后的子类直接继承

    此 抽象类,就可以根据需要选择性的覆盖父类的方法。

  

java中三大修饰符的更多相关文章

  1. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  2. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  3. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

  4. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  5. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  6. 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...

  7. Java中常用修饰符使用汇总

    修饰符汇总: 一:public protected default private 修饰类,修饰方法,修饰属性,修饰代码块.  类: 顶级类只能用public 修饰,顶级类不能使用private 和p ...

  8. Java中的修饰符

    -----------------------------------------------01----------------------------------------------- 类,方 ...

  9. java中权限修饰符protected的使用注意事项

    java中四种权限修饰符, 平时编码中最常用的其实public和private, 虽然对protected的概念一直都知道, 但真正使用时才发现有些偏差. protected表示被其修饰的成员可以被本 ...

随机推荐

  1. 教你成为全栈工程师(Full Stack Developer) 一-各显神通总结八大类编程语言的区别

    为了能在最快的时间里理解更多语言的相同点和不同点,我用大家最熟悉的Hello World来展示一下各个语言的奥妙   请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 ...

  2. MemoryStream和FileStream

    一,FileStream对象的数据来自文件,而MemoryStream对象的数据来自内存缓冲区.这两个类都继承自Stream类. 二,抽象基类System.IO.Stream代表流,它提供Read和W ...

  3. Python3 操作Excel--openpyxl

    操作Excel文件建议使用openpyxl 兼容office2016 打开excel文件,获取工作表 import openpyxl wb=openpyxl.load_workbook('ttt.xl ...

  4. [SQL基础教程] 4-1 数据的插入(INSERT)

    [SQL基础教程] C4 数据更新 4-1 数据的插入(INSERT) INSERT INSERT INTO <表名>(列1,列2...) VALUES(值1,值2...); 清单 用() ...

  5. [SOJ] Babelfish

    Description You have just moved from Waterloo to a big city. The people here speak an incomprehensib ...

  6. android之活动状态、生存期、启动模式

    活动状态:1.运行状态2.暂停状态3.停止状态4.销毁状态 活动的生存期 七个回调方法1.onCreate()2.onStart()3.onResume()4.onPause()5.onStop()6 ...

  7. Java 序列化 JDK序列化总结

    Java 序列化 JDK序列化总结 @author ixenos Java序列化是在JDK 1.1中引入的,是Java内核的重要特性之一.Java序列化API允许我们将一个对象转换为流,并通过网络发送 ...

  8. 使用python修改QQ密保(脚本)

    一.基于以下目的: 1.为了增加对Http协议理解能力,对QQ密保修改的请求进行了分析 2.为了锻炼python的编写能力 3.对web综合知识的理解 花了点时间写了这个脚本,下面介绍脚本的过程 二. ...

  9. Oracle表锁住处理

    select object_id,session_id,locked_mode from v$locked_object; select b.owner,b.object_name,l.session ...

  10. Form提交时隐藏Token验证

    前端声称一个Token @Html.AntiForgeryToken() 后台对Token进行验证 AntiForgery.Validate();