一、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) 〇-什么是全栈工程师

    作为一个编码12年的工程师老将,讲述整段工程师的往事,顺便把知识都泄露出去,希望读者能少走一些弯路. 这段往事包括:从不会动的静态网页到最流行的网站开发.实现自己的博客网站.在云里雾里的云中搜索.大数 ...

  2. Jmeter之基本介绍

    初学Jmeter,以下是我常用的功能,总结一下. 1.Thread Group线程组 线程组,即:虚拟用户组

  3. Eclipse/MyEclipse 安裝後應該更改的設置

    基本上都通過 Window -> Preferences 進行設置: Java 保存自動格式化: Java:Java -> Editor -> Save Actions,選中 Per ...

  4. CFround#380 div2

    题目链接:http://codeforces.com/contest/738 A题:SB题. B题:SB题. C题:二分. D题:贪心. E题:乱搞. F题:设f[i][j][k]代表甲先手,左边消去 ...

  5. linux 学习-用户&群组&权限

    Linux用户&群组&权限  ⦁ Linux安全性模型   1)Linux使用User和Group控制使用者对文件的存取权限   2)用户使用账号和口令登录Linux   3) ...

  6. codevs3027线段覆盖2(DP)题解

    题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段 ...

  7. [MFC美化] USkin使用详解-使用方法

    该种皮肤库资料很少,用法与前面几种类似. 它主要有:USkin.dll ,USkin.lib,USkin.h和Sakura.msstyles这四个文件.皮肤格式是.u3.SkinBuilder是USk ...

  8. 最近一段时间get到的小知识(c++的)

    (1)查看一个程序运行的时间 int main() { clock_t start,end; start=clock(); ... end=clock(); cout<<"Run ...

  9. [UWP小白日记-3]记账项目-1

    学了一段时间的UWP,来个项目试试手. 本来是想边做边学MVVMLight的结果感觉MVVM对于萌新来说太高难,以后再把这个项目改造成MVVMLight框架的项目. 下面进入正题. 中间那快空白打算放 ...

  10. X11 五子棋

    #include <X11/Xlib.h> #include <stdlib.h> #include <X11/keysym.h> #include <cst ...