面向对象4

Static关键字详解

package com.oop.demo07;

//static
public class Student {

    private static int age; //静态的变量
    private double score;   //非静态变量


    public void run(){

        go();  //非静态方法可以调用静态方法里所有的东西
    }

    public static void go(){

    }

    public static void main(String[] args) {
        Student s1 = new Student();

        //调用变量
        System.out.println(Student.age);     //静态变量可以直接通过类名访问
        //System.out.println(Student.score); //会报错,非静态不能直接类名访问对象
        System.out.println(s1.age);
        System.out.println(s1.score);

        //调用方法
        new Student().run();
        Student.go();
        go();

    }
}
package com.oop.demo07;

public class Person {
/*
    {
        //代码块(匿名代码块)
    }
    
    static{
        //静态代码块
    }
*/
    {
        System.out.println("匿名代码块");
    }
    static {
        System.out.println("静态代码块");
    }

    public Person() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Person person1 = new Person();
        //输出内容:
        //静态代码块
        //匿名代码块
        //构造方法
        System.out.println("=========================");
        Person person2 = new Person();
        //输出内容:
        //匿名代码块
        //构造方法


        //得出结论:静态代码块只执行一次
        //匿名代码块可以赋初始值
    }
}
package com.oop.demo07;

//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;

public class Test {
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(PI);
    }
}

抽象类

特点:

  • 不能new这个抽象类,只能靠子类去实现它:约束!
  • 抽象类可以写普通的方法
  • 抽象方法必须在抽象类中
package com.oop.demo08;

//abstract 抽象类
//类 extends :单继承   (接口可以多继承)
public abstract class Action {

    //abstract 抽象方法,只有方法名字,没有方法的实现!
    public abstract void doSomething();

    
}
package com.oop.demo08;

//抽象类的所以方法,继承了它的子类,都必须要实现它的方法
public class A extends Action{
    @Override
    public void doSomething() {

    }
}
posted @ 2022-04-17 20:57  lauMonkey  阅读(28)  评论(0)    收藏  举报