Java基础学习 day_06

abstract

1.abstract 可以有构造方法,但不能new对象,但是可以引用。
2.抽象类不一定有抽象方法,但是有抽象方法的一定是抽象类
3.继承抽象类,必须实现抽象类中所有的抽象方法。除非子类也是抽象类。
4.修饰方法和类
5.抽象类中可以有抽象方法和非抽象方法。

static

1.static 修饰的属性存放在方法区,构建对象之后,访问static修饰的属性和方法,是由栈中的局部变量指向堆中的实例化对象,再由实例化对象指向方法区中staitc修饰的属性或者方法。
在这里插入图片描述

2.静态属性是整个类共同持有的共享空间,(只有一份),任何对象修改,都会影响其他对象。所有这个类的对象都可以访问。
3.静态属性(类属性),静态方法(类方法)
4.类名.属性; 类名.方法
5.静态方法和静态属性最好用类名来访问。
6静态方法可以访问静态成员静态方法不能直接访问非静态成员
从时间角度,对象还没有被创建,非静态成员无法访问。从空间角度,静态方法就一份,但是可以有很多的对象可以访问,非静态成员指向不明确。所以静态方法不能直接访问非静态成员。
7.静态方法中不允许使用this和super关键字。
8.静态方法可以继承,但不允许重写,没有多态。
9.如果子类的的静态方法和父类的静态方法相同,不是重写,只是重名。这在方法区里是两个不相同的区域。最好用类名访问
10.修饰类和属性
11.在非静态方法(实例方法)中可以访问静态属性和方法。
12.main()为什么是静态的,一个程序只有一个入口,如果没有设为static,每次创建一个对象都有一个main()方法,这是不可能的,所以main()是静态的。

类加载

JVM首次使用某个类是,会通过CLASS_PATH找到.class文件,将该文件加载到内存中进行保存。如:包名、类名、父类、属性、方法、构造方法…

加载时机:
创建对象
创建子类对象
访问静态属性
调用静态方法

三个代码块
局部代码块:写在方法里,节省空间。在这里插入图片描述
动态代码块:

package qf.test02;
/**
 * 2020/7/28
 * 11:45
 */
public class Dog {
    String name;
    int age;
    String furColor;
    {
        name="小黑";
        System.out.println("动态代码块执行了....");
    }
    public Dog(String name, int age, String furColor) {
        this.name = name;
        this.age = age;
        this.furColor = furColor;
        System.out.println("有参构造方法执行了...");
    }
    public Dog() {
        System.out.println("无参构造方法执行了...");
    }
    public void show(){
        System.out.println("名字:"+this.name+"年龄:"+this.age+"肤色"+this.furColor);
    }
    public static void main(String[] args) {
        Dog dog=new Dog("轩轩",19,"黑色");
        dog.show();
        Dog dog1=new Dog();
        dog1.show();
    }
}

在这里插入图片描述

静态代码块:类加载时,会触发静态代码块的执行,为静态成员赋值,或进行必要的操作。进行一次****。
static{

}

实例属性只能在创建对象的时候初始化。

final

1.修饰方法,类,属性。
final修饰类(最终类):没有子类
2.final修饰方法 (最终方法):不能重写。可以继承
3.final修饰变量,就不能修改(常量)
final修饰实例变量1.声明时赋值2.构造方法中赋值,动态代码块中赋值。
4.final修饰类变量(静态变量)
final static String COUNTRY=“中国”;
1.声明时赋值2.在静态代码块中赋值
5.对象常量。不能修改地址。属性可以修改。

abstract 不能和final共同使用,abstract需要重写,而final不让重写。
abstract 不能和static共同使用。abstract没有方法体,用类出访问,没意义。

猜你喜欢

转载自blog.csdn.net/m0_45196258/article/details/107604007