zoukankan      html  css  js  c++  java
  • 修饰符(static、final、abstract)第一篇

    三个修饰符:

    一、static:

    作用域:

    1. 属性

    1.1 静态属性不必要创建新对象,可直接用类调用

    1.2 其值发生改变,则类中的值也会随之而变并延伸到其他对象中

    例子:

    class Animals {
    // /1.static 修饰属性
    static String a = "静态属性值";
    String b = "非静态属性值";
    }

    Animals  ani=new Animals ();

    ani.a="修改";

    ani.b="修改非";

    Animals  ani1=new Animals ();

    ani1.a;//"修改";

    ani1.b;// "非静态属性值";

    1.3 static 不能修饰局部变量属性值

    2. 方法

    2.1 访问是static修饰的方法不必要创建新对象访问,可直接用类调用

    2.2 在static修饰的方法中,只能访问:

    2.2.1 全局变量中定义的static属性

    2.2.2 static方法

    2.2.3 其方法中定义的局部变量

    2.3 不能使用this关键字

    2.4 静态方法的覆写不能实现不了多态

    3.修饰代码块

    3.1 作用:

    提高程序的性能

    3.2 使用:

    独立于方法

    3.2 特点:

    只在类加载时执行一次

    可参考


    练习代码君:

    package com.jacob.javase;


    /*
     * 修饰符:
     *    static详探
     */
    class Animals {
    // /1.static 修饰属性
    static String a = "静态属性值";
    String b = "非静态属性值";


    public Animals() {
    // Illegal modifier for parameter a1; only final is permitted
    // 1.1、static String a1="";原因static不能修饰局部变量
    }


    // 2.static 修饰方法
    public static void eat() {
    // Cannot use this in a static context
    // 2.1、this.a;//静态方法中不能使用this关键字
    // int b=0;//方法中局部变量的值可访问
    // 2.2、静态方法中只能调用静态方法(具体可参考main方法)
    System.out.println("Animals静态方法");
    // 2.3、静态方法中只能访问类全局中的静态属性
    // System.out.println(b);
    }


    // 静态代码块:1.在类加载时实现一次 2.使用起来是独立于方法 3.提高程序的性能
    static {
    System.out.println("静态代码块");
    }


    }


    class Cat extends Animals {
    // 2.4、 静态方法不能实现多态
    public static void eat() {
    System.out.println("cat静态方法");
    }
    }


    public class ModifierStatic {
    public static void main(String[] args) {
    Animals ani = new Animals();
    ani.a = "修改后的静态属性值";
    ani.b = "修改后的非静态属性值";
    Animals ani1 = new Animals();
    // 1.2、说明对象对类静态属性(类变量)值的改变,其类中值会相应改变(因为静态存储在静态数据区,可直接调用)
    System.out.println("ani1中的a:" + ani1.a + " || " + "ani1中的b:" + ani1.b);
    // 1.3、静态属性值可不必创建对象,直接用类调用,原因同上
    System.out.println("Animals中的a:" + Animals.a);
    Animals a2 = new Cat();
    a2.eat();// ——Animals静态方法
    Animals.eat();// —— Animals静态方法(静态方法同样可以用类直接调用)
    }
    }












  • 相关阅读:
    Kosaraju算法---强联通分量
    Java和C++的区别
    嵌入式面试题汇总
    tabbar 之 基本结构搭建
    路由 之 再识
    常见问题 之 vue项目中使用less报错
    路由 之 初识
    VueCLI3创建项目和目录结构与配置信息详解
    runtime-compiler 和 runtime-only的区别
    vueCLI2 之 目录结构
  • 原文地址:https://www.cnblogs.com/xieji233/p/6155636.html
Copyright © 2011-2022 走看看