java中三大修饰符

简介: java中三大修饰符

java中三大修饰符


一、static


1、属性:



类变量 定义在类以内,方法以外,全类有效,全类公共一个属性,类变量与创建对象无关,有默认值

使用方式 类名.类变量


  class User{
        static int count;
        //作用:计数器   生成id
        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的普通方法,工具方法,全类共用一个功能


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


 注意:

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

 2》静态方法只能被静态方法覆盖,并且没有多态,引用类型是什么类型,调用的就是什么类型的方法。


     

3、初始化代码块


静态初始化代码块


作用:给静态属性赋值,类加载时被执行一次,只有一次


类加载:在虚拟机第一次使用一个类的时候,需要类的相关信息加载到内存中并保存起来的过程,类加载时,初始化静态属性,执行静态初始化代码块。


类加载时机:

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


二、final 最终的,最后的


变量:

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

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


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

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

public static final

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


类: 不能被继承


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


类 不能new对象


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


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


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


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


接口


语法:

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

 关键字 interface

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

 所有属性 public static final(默认)

 所有方法 public abstract(默认)

 没有构造方法

 支持多继承

   接口和接口直接多继承 extends

   类和接口直接多继承 implements


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

标准:(多态)

 接口回调:在定义了接口之后,现有的接口使用者,然后在定义接口的实现者

 抽象类和接口的相同点

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


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


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


抽象类和接口的不同点

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


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


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


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


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


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


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


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


应用(适配器模式)

目的:

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


原理:


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


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


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


实例:


如果一个普通类要实现一个接口,则要覆盖此接口中的所有抽象方法。如果一个接口中定义的方法过多,但是在子类中又用不到这么多的抽象方法 ,则肯定很麻烦,所以此时需要一个中间的过度,但是过度类又不希望被直接使用,所以将此过度类定义成抽象类最合适(适配器),并在此抽象类中实现接口中的所有方法,方法体为空,则以后的子类直接继承 抽象类,就可以


目录
相关文章
|
4月前
|
机器学习/深度学习 Java 数据安全/隐私保护
Java(二十二)修饰符
Java(二十二)修饰符
24 0
|
1月前
|
Java C++
Java修饰符
Java修饰符
7 1
|
1月前
|
前端开发 Java 数据安全/隐私保护
【Java从入门到精通】Java修饰符
【Java从入门到精通】Java修饰符
16 0
|
1月前
|
设计模式 安全 Java
Java修饰符
Java修饰符
11 0
|
2月前
|
缓存 Java 程序员
深入理解 Java 修饰符与封装:访问权限、行为控制与数据隐藏
ava 修饰符 用于控制类、属性、方法和构造函数的访问权限和行为。它们可以分为两组: 访问修饰符: public: 意味着代码对所有类可访问。 private: 意味着代码只能在声明的类内部访问。 default: 意味着代码只能在同一包中访问。 protected: 意味着代码在同一包和子类中可访问。 非访问修饰符: final: 意味着类不能被继承,属性和方法不能被重写。 static: 意味着属性和方法属于类,而不属于对象。 abstract: 意味着类不能用于创建对象,方法没有主体,必须由子类提供。 transient: 意味着在序列化包含它们的对象时,属性和方法将被跳过。 sync
117 0
|
2月前
|
缓存 Java 编译器
Java 构造函数与修饰符详解:初始化对象与控制权限
Java 构造函数 是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。 构造函数的作用: 为对象的属性设置初始值 执行必要的初始化操作
54 0
|
8月前
|
存储 Java 编译器
Java-关于main函数的修饰符(为什么要带public和static)
关于Java主函数的修饰符(为什么要带public和static) public修饰符 public是函数的权限,决定了该函数是否可以被外部的函数调用
|
4月前
|
存储 Java
Java的接口、类、属性、方法的修饰符使用总结
Java的接口、类、属性、方法的修饰符使用总结
123 0
|
9月前
|
机器学习/深度学习 Java 数据安全/隐私保护
java基础 --- Java修饰符总结与应用
java基础 --- Java修饰符总结与应用
104 0
|
6月前
|
druid Java 编译器
Java的第七篇文章——面向对象接口(包含了接口、static修饰符、final修饰符、main方法、内部类等知识点)
Java的第七篇文章——面向对象接口(包含了接口、static修饰符、final修饰符、main方法、内部类等知识点)