• 【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述


    • 1. 修饰符
      •  public、protected、private、default
      •  abstract、static、final、
        •  abstract:抽象类、抽象方法
        •  static:静态变量、静态方法、静态代码块
        •  final修饰类、方法、变量
      •  transient、violatile、native、synchronized
    • 2. 变量 
      •  实例变量、局部变量、类变量

     

    1. 修饰符

    · public、protected、 private、default

    类的访问权限

      当前类 同包其它类 子孙类 其它包的类
    public
    protected ×
    default/缺省 × ×
    private × × ×

    能够修饰的位置 

      类/接口 方法 变量
    public
    protected ×
    private ×
    default/缺省 √  
    public class A{}
    class B{}
    

    · abstract 、static、 final、 transient、violatile、synchronized

    总述:可修饰的位置(空白处为无此用法)

      方法 变量 代码块
    abstract    
    static  
    final  
    transient      
    native    √    
    violatile      √  
    synchronized  √  

    abstract - 抽象类、抽象方法

    /**
    1. 被abstract修饰的类即为抽象类;
    2. 抽象类的权限修饰符为public,缺省(如下)也为public;
    3. 抽象类无法创建对象(即不能new);
    4. 其余情况与普通类相同。
    */
    abstract class animal {
      int num;//成员变量可使用任何访问权限修饰词(public、protected、private)
    /** 
    1. 抽象方法必须为public或protected,缺省即为public;
    2. 抽象方法没有方法体,即符号{};
    3. 子类中必须实现抽象方法,否则子类仍为抽象类。
     */ 
      abstract void run();     
    }
    class lion extends animal{   
      void run(){}
    }
    

    static:静态变量、静态方法、静态代码块

    public class Test {
    
    	public static int a = 100;  //静态变量
    	public int b = 100;       //实例变量
    	
    	//静态方法
    	public static void method_a() {	
    		System.out.println("===static method===");
    	}
    	
    	//实例方法
    	public void method_b() {	
    		System.out.println("===instance method===");
    	}
    
    	public static void method_c() {
    		int c = 0;	//局部变量
    		a = 5;		//可访问[静态变量]
    		method_a();	//可调用[静态方法]
    
    		//b = 5;        不能访问[实例变量]
    		//method_b();   不能调用[实例方法]
    	}
    
    	public static void main(String[] args) {
    		Test t = new Test();      //创建实例化对象
    		
    		int static_var = Test.a;  //[类名.静态变量名]访问
    		int instance_var = t.b;   //[对象.变量名]访问
    		
    		Test.method_a();  //[类名.静态方法名]访问
    		t.method_b();     //[对象.方法名]访问
    	}
          
             
    	static {         //静态块,在类加载时自动执行块中的内容
    		int d = 1;
    		int c = 0;	 //局部变量
    		a = 5;		 //可访问[静态变量]
    		method_a();	 //可调用[静态方法]
    
    		//b = 5;        不能访问[实例变量]
    		//method_b();   不能调用[实例方法]
    	}
    
    } 

     final

    1. final 修饰的类无法被继承;

    2. final 修饰的方法无法在子类中重写(override)

    3. final 修饰变量:基本类型变量,初始化后数值无法更改;引用类型变量,初始化之后不能再指向另一个对象。

    4. final static修饰的为常量

    transient

    public class Test {
    	int a;              //持久化
    	transient int b;    //非持久化
    }
    

    synchronized为线程内容,在稍后的博文中描述;

    violatile、native少有接触,以后再另作描述。

    2. 变量

    根据声明的位置划分: 成员变量、局部变量、类变量

    根据所属数据类型划分:基本数据类型,引用数据类型

      实例变量(成员变量) 局部变量 类变量(静态变量)
    修饰符   修饰符不可出现 必须有static
    定义位置 类中,方法、构造方法与语句块之外 声明在方法、构造方法、语句块 类中,方法、构造方法与语句块之外

    变量的值可以在声明时指定,也可以在构造方法中指定,还可以在静态语句块中初始化。 

    访问 对象调用   类名.变量名
    可见

    实例变量对于类中的方法/构造方法/语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见

    相关方法、构造方法或者语句块 与实例变量具有相似的可见性。

    但为了对类的使用者可见,大多数静态变量声明为public类型

    生存时间  与对象共存亡

     方法/构造方法/语句块被执行时创建;执行完毕后销毁

     在程序开始时创建,在程序结束时销毁。
    分配位置  堆 (heap) 栈 (stack) 静态存储区(方法区) 
    默认值 同类变量  没有默认值,必须初始化才能使用

    数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。

     

  • 相关阅读:
    Spring Boot SockJS应用例子
    Spring Boot+STOMP解决消息乱序问题
    Spring boot集成Websocket,前端监听心跳实现
    吐槽Windows 8,就没见过这么烂的平板操作系统
    怎样在MyEclipse上耍Chrome
    HDOJ 4876 ZCC loves cards
    IIS7.5 配置 PHP 5.3.5
    关于ANDROID模拟器的一些事
    性能測试命令字段解释
    排序算法复习
  • 原文地址:https://www.cnblogs.com/tubybassoon/p/9524973.html
Copyright © 2020-2023  润新知