zoukankan      html  css  js  c++  java
  • final、static、匿名

    讲解作业

    空参的快捷键 :

    //空参  Alt+Shift+s -----Generate Constructor using Fields
        public Employee(){
            
        }
        public Employee(String ename,int eid,int salary){
            this.ename=ename;
            this.eid=eid;
            this.salary=salary;
        }

    Final 关键字

    特点          写在 public 后 class前

    修饰类:不可被继承 ,但可继承其他类(太监类)

    修饰方法:不可以被子类重写,但继承使用

    修饰局部变量: 一次赋值,终身不变  相当于常量

    final int a = 20;
    a = 30; //赋值报错,final修饰的变量只能赋值一次

    修饰引用类型的变量值为对象地址值,地址值不能改,对象属性可以改。

    final Person p = new Person();
    Person p2 = new Person();
    p = p2; //final修饰的变量p,所记录的地址值不能改变
    p.name = "张三";//可以更改p对象中name属性值
    //p 是无法更改,只能改属性值

    修饰成员变量:当final修饰成员变量时 ,必须定义就赋值。终身不变或者用构造方法

    pm

    Static 关键字

     静态修饰符,一般修饰类中成员变量和方法

    特点:

    不可以被继承,但可以继承其他类

    class Yy {}
    final class Fu extends Yy{} //可以继承Yy类
    class Zi extends Fu{} //不能继承Fu类(不可以当父亲)

    修饰成员变量:

    被static修饰的成员变量属于类,不属于这个类的某个对象(static在类中修改了变量值,其他对象中的static成员变量值跟着改变,多个对象共享同一个static成员变量

    private String name;
        private int age;
        //用static修饰这个变量
        public static String schoolname="山东大学";
    -----------------------------------------
    public static void main(String[] args) {    
           //18后面可以不用写"山东大学"  因为static在类中已经修饰过
        Students s1=new Students("张三",18,"山东大学");//被static在类中赋值后,在调用,就不需要在写属性值,
        Students s2=new Students("李四",18);
        Students s3=new Students("王五",18);
        Students s4=new Students("赵六",18);  
    //类名.变量名
        Students.schoolname="北京大学";
        System.out.println(Students.schoolname);
        //类名。方法名()
        Students.show();
        }

    在静态前:

    静态后:

    修饰成员方法:

    类名.静态成员变量名

    类名.静态成员方法名(参数)

    对象名.静态成员变量名       ------不建议使用该方式,会出现警告

    对象名.静态成员方法名(参数)     ------不建议使用该方式,会出现警告

     

    class Student {
        //静态成员变量
        public static int num = 100;
        //静态方法
        public static void show(){
            System.out.println("静态方法");
        }
    }
    class Demo {
        public static void main(String[] args) {
            System.out.println(Demo.num);
            Demo.show();
        }
    }

     

    被static修饰后的方法,就属于这个类而不属于它的对象

    总结:修饰成员变量和成员方法时:静态不能访问非静态,但非静可以访问静态(先进的不知道后进的  但后进的知道先进的)

    注意

    静态只能访问静态,静态不能使用 this(本类对象)跟super(父类对象)

    main方法里必须有static 原因:main方法是程序入口,不属于任何一对象,由虚拟机调用,它是特殊方法,可定义在任意类中

    同一个类中,静态成员只能访问静态成员

    class Demo {
        //成员变量
        public int num = 100;
        //静态成员变量
        public static int a = 200;
        //静态方法
        public static void show(){
            //System.out.println(num); 静态方法中,只能访问静态成员变量或静态成员方法
            System.out.println(a);
        }
    }

    多态调用方法

    编译看=左边,父类有,编译成功,父类没有,编译失败

    运行,静态方法,运行父类中的静态方法,

    运行,非静态方法,运行子类的重写方法

    成员变量,编译运行全是父类

    定义静态常量

    static final  只能在定义时赋值。没有第二种赋值方法

    格式:

    public static final 数据类型 变量名 = 值;

    所有接口中的成员变量已是静态常量,因接口没有构造方法,必须显示赋值。可以直接用接口名访问

    interface Show {
        public static final int COUNT = 100;
            Show.COUNT   //直接用接口名访问变量
    }        

    匿名对象

      创建对象时,只有创建语句,没有对象地址赋值给某个变量

     匿名对象,只能调用一次

  • 相关阅读:
    leetcode 114. 二叉树展开为链表
    leetcode 338. 比特位计数
    leetcode 128. 最长连续序列
    leetcode 22. 括号生成
    leetcode 200. 岛屿数量
    leetcode 70. 爬楼梯
    P6072 『MdOI R1』Path
    CF1574D The Strongest Build
    『MdOI R1』Treequery
    CF1562E Rescue Niwen!
  • 原文地址:https://www.cnblogs.com/zs0322/p/10898278.html
Copyright © 2011-2022 走看看