final static public---Java

参考链接

一, final

final:”不可更改的”,可以修饰非抽象类,变量或者方法。一旦将引用声明为final,就不可以改变这个引用了。

  • final 修饰的常量只能被初始化一次,一旦初始化之后就不能再次重新赋值(重新指向其他对象)
final StringBuffer s = new StringBuffer("string");
        //这里 s 指向的对象本身可以修改
        s.append("add");
        //s=new StringBuffer("new"); 错误。s 不可以再指向其他对象

对方法参数和方法内部变量加上final 作用相同,既是为了将它们传给内部类时保证调用的一致性。

  • final 类不可以被继承(因此不可以修饰抽象类)
  • final 方法不可以被子类的方法修改
  • 原因:把方法锁定,防止任何继承类修改;高效。

    /*
     * final 方法的重载 重写以及继承
     * */
    package com.something;
    
    public class Ch3_Final {
    
        public static void main(String[] args) {
            Change ch =new Change();
            //test1可以被继承
            ch.test1();
            ch.test2();
            //test1可以被重载
            ch.test1("ok");
        }
    }
    class Test {
        //final 方法
        public final void test1(){
            System.out.println("this is original test1");
        }
        public void test2(){
            System.out.println("this is original test2");
        }
    }
    class Change extends Test {
        //final 方法不可以被重写
        public void test2(){
            System.out.println("this is test2");
        }
        //final 方法可以被重载 overload
        public void test1(String s){
            System.out.println("this is the overloaded test1---" + s);
        }
    }
    
    

    二,static

    static:”静态的”,用来修饰成员变量或者成员方法。也可以形成静态代码块。


    • static 修饰变量
    • static 修饰方法
    • 所修饰的变量或者方法称为类方法或类变量, 被类的所有实例共享,不依赖于类特定的实例。可以直接用类名来访问,也可以构造实例来访问(不推荐)。注意,类方法不能操作对象,所以不能在类方法中访问实例域,但是类方法可以访问自身类中的静态域。
      对于类变量任何对象对其修改都是修改的 同一个变量
      这里关于类方法和实例方法之间的访问。
    • static修饰的代码块:静态代码块
    • 静态代码块不在任何方法体内,JVM加载类时会执行这些静态代码块(静态代码块自动执行,静态方法被调用时才执行)。
      Java 程序的执行顺序:
      1. 静态块—是生成类之前初始化的,是最先初始化好的,每个代码块只执行一次,之后及时有该类的实例化也不会执行。
      2. 块
      3. 构造器
      4. 父类构造器
      Java 中的赋值顺序:
      1. 静态块直接赋值
      2. 块直接赋值
      3. 父类集成的属性已赋值
      4. 静态变量声明时赋值
      5. 成员变量声明时赋值
      6. 构造器赋值

    三,public

    public是访问控制修饰符,public,private决定的只是访问权限。所以public static,private static 中影响的只是权限的问题。

    package com.something;
    
    public class Ch4_privateStatic {
        public static void main(String[] args) {
            TestStatic t1 = new TestStatic("book1");
            TestStatic t2 = new TestStatic("book2");
            //这里numBooks 读取不到,Test.numBooks 报错,因为是private
        System.out.println("numBooks is "+TestStatic.id + "; name1 is "+t1.name + ";name2 is "+t2.name );
        }
    
    }
    class TestStatic{
        //1,private static int numBooks=0;
        static int id=0;
        public String name;
    
        public TestStatic(String name){
            //这里 numBooks 每次创建一个实例就会自增一次,且 private 在其他 class 中不可以被访问
            //2,id=++numBooks;
            id++;
            this.name=name;
        }
    }

    四类修饰符

    public protected default private四类修饰符

    • public:任何地方都可以访问,对访问没有限制
    • protected:同一个包或者不同包内子类可以访问
    • 默认 default:同一个包内可以访问
    • private :只有本类可以访问,其他同包中包括类和子类都不可访问这些私有的成员
      这里写图片描述

    接口与抽象类

    • 实现继承个数
    • 抽象方法个数:接口中都是抽象方法
    • 是否使用字段:常量字段,接口中只能是static final 类型的,抽象方法不限
    • 方法的描述符:接口中方法必须是public
    • 是否构造函数:接口中没有构造函数,抽象类中可以有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值