java中三大修饰符

一、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):通过包装一个需要适配的对象,把原接口转换成目标接口。

    

    实例:

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

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

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

  

时间: 2024-10-29 10:47:35

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

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

java中Volatile修饰符的含义

在java语言中:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值进行对比. volatile关键字的作用就是提示vm:对于这个成员变量不能保存它的私有拷贝,而应直接与共享变量进行交互. 被volatile修饰符修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值.而且,当成员变量发生变化时,又强迫线程将变化了的值写回共享内存,这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值.这样当多个线程同时与某个

Java中的修饰符

在java中,修饰符分为访问权限修饰符和非访问权限修饰符.可以被修饰符修饰的java语言元素有类,变量,方法和接口.下面分别描述在这四个元素上使用修饰符的作用. 类 java中声明类的格式为: 访问修饰符 修饰符 class 类名 extends 父类名称 implements 接口名称{} 其中访问修饰符和修饰符可以互换位置,可以应用于类的访问修饰符为public和package,public表明类可以被任何类使用.package表示包访问权限,它是默认的访问权限,可以省略这个修饰符,使用pa

Java中final修饰符深入研究

一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很多Java程序员来说,他们大都只是草草看了一下各种书本上的介绍,然后背下来,什么时候想起 来有这东西就用一下.对于何时使用final修饰符.使用final修饰符对程序有什么影响,这些其实他们并不知道,当然在这篇文章之前,我也是一知半解的. 我们书本上对final的描述大概有三种用法: final可以修饰变量,

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

Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问.private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以 及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问.protect: 介于public 和 private 之间的一种访问修饰符,一

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

Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 修饰符 名称 说明 备注 final 使用此修饰符的类不能够被继承 abstrac

【转载】Java中各种修饰符与访问修饰符的说明

转:http://handbook.blog.163.com/blog/static/837295522010889212296/ 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和publi

Java中常用修饰符使用汇总

修饰符汇总: 一:public protected default private 修饰类,修饰方法,修饰属性,修饰代码块.  类: 顶级类只能用public 修饰,顶级类不能使用private 和protected 修饰. 外部类可以被public修饰或者默认不写,不能用private和protected. 内部类可为静态,可用protected和private修饰. 方法:       通常方法可以被四个访问修饰符修饰,构造方法也可以被四个访问修饰符修饰.      抽象类中的抽象方法不能被

8)关于Java中各种修饰符与访问修饰符的说明

?1> 类 ? 访问修饰符??修饰符??class?类名称?extends?父类名称?implement?接口名称 (访问修饰符与修饰符的位置可以互换) ? 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 private 修饰内部类 ? ? 修饰符 名称 说明 备注 final 使用此修饰符的类不能够被