java基础知识-修饰符,抽象类

java修饰符,抽象类

java修饰符

java中提供了很多的修饰符,主要分为以下两大类

  • 访问修饰符
  • 非访问修饰符
访问修饰符

修饰符就是用来修饰类,方法,变量的,根据修饰符的不同,被修饰的内容也会拥有不同的访问权限

在这里插入图片描述

public: 对所有类都可见,使用对象:类,接口,变量,方法

protected: 对同一包内的类和所有子类可见,使用对象:变量,方法。

default:(什么都不写)在同一包内可见,不使用任何修饰符。使用对象:类,接口,变量,方法。

private:在同一类内可见,使用对象变量,方法。

非访问修饰符
  • static修饰符,用来修饰方法变量

  • final修饰符,用来修饰类,方法,变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

static
静态变量:

static关键字用来声明独立于对象的静态变量,对于静态变量,无论它有多少个实例化对象,静态变量也只有一个,它属于类,而不属于任何单个的对象。可以通过类名.变量名直接调用。

静态方法:

静态方法是不在对象上执行的方法,而是通过类名直接调用,例如Math.pow(x,a);用来计算x的a次方的值,

一个比较容易混淆的问题?

静态方法能不能引用非静态资源?静态方法里能不能引用静态资源,非静态方法能不能引用静态资源?

public  class  Test(){
    private String name = "张三"
    public static void main(String[] args){
         System.out.println(name);
    }
    
}

在这里插入图片描述
静态资源是独立于类存在的,它在类的初始化的时候就加载了,而非静态资源是类new的时候加载的,类的初始化早于new。所以main方法先执行,此时还没有变量name,就会报错,所以上面的几个问题也就很明确了。

1.静态方法不能引用非静态资源,因为静态方法先加载。

2.静态方法能引用静态资源,因为是一起加载的。

3.非静态方法能够引用静态资源,因为,非静态方法后加载,此时静态资源已经被加载了。

静态代码块

静态代码块也是初始化一个类的时候做操作用的,静态块里面的代码只执行一次,且只在初始化类的时候执行,

public  class  Test{
    private static int a = B();
    static {
       System.out.pritnln("静态代码块执行了");
    }
    public  static void main(String[] args){
       System.out.println("main方法执行了");
    }
    public  statinc int B(){
        System.out.pritnln("静态方法B执行了");
    }
}

在这里插入图片描述

从上面的代码可以得出结论,静态资源的加载顺序是严格按照静态资源的定义顺序来加载的。

final关键字

final关键字一般用来修饰变量,方法,类,被final修饰后的变量一旦赋值后,就不能重新被赋值,如果成员变量是基本数据类型,初始化之后成员变量的值就不能被改变,如果成员变量是引用类型,那么它只能指向初始化时指向得呢个对象,不能再指向别的对象,但是对象中的内容可以允许改变。

在这里插入图片描述
可以看到基本变量使用final修饰了就不可以变了。
在这里插入图片描述
对于引用变量被final修饰了,引用变量引用不可变,但是引用对象的内容可以改变。

java抽象类

包含抽象方法的类就是抽象类,而抽象方法就是没有方法主体的方法,因为,重写的原因,父类的方法会被子类以不同的方式进行实现,此时父类的方法体就没有存在的意义了。没有方法体的方法就称为抽象方法。

使用abstract关键字来修饰方法和类,这样的方法和类就是抽象方法和抽象类。

抽象类定义:

修饰符 abstract class 类名{

}

只要一个类包含抽象方法,那么该类必须是抽象类,

抽象方法定义:

修饰符 abstract 返回值类型 方法名(参数列表);

public abstract void eat();

抽象方法的特点:

  1. 抽象类不能创建对象,所以抽象类必须被继承,才能被使用。
  2. 继承抽象类的子类必须重写父类所有的抽象方法,否则,该子类也必须声明为抽象类,
  3. 抽象类中,不一定包含抽象方法,但是包含抽象方法的类必定是抽象类。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值