0
点赞
收藏
分享

微信扫一扫

访问修饰符的访问控制和关键字的使用

我阿霆哥 2022-01-27 阅读 154
javaidea

访问修饰符

访问控制private缺省protectedpublic
同一类中的其他成员
同一个包中的其他类×
不同包中的子类××
不同包中的非子类×××

this关键字

  • this修饰属性,方法
    this调用属性和方法,可以将this看成当前对象,在类中通常会省略this.
    但是,特殊情况,如set方法的形参名和属性名相同时,就需要使用this来指明当前对象

  • this调用构造器
    this([形参列表]) 用来在构造器中调用其他构造器
    this([形参列表]) 调用构造器,在被调用的构造器中还可以调用其他构造器,但是注意: this调用构造器不能形成闭环
    在构造器中使用this([形参列表])时,必须将该代码放在首行

super关键字

  • “super.” 调用父类被重写的成员(属性/方法), 如果直接父类找不到, 就去间接父类找, 直到找到为止
  • super([形参列表]) 用于在子类构造器中调用父类构造器, 必须写在构造器的首行

this和super使用的注意事项

this调用同类中其他构造器的代码和super调用父类构造器的代码都必须放在构造器的首行,所以二者在构造器中只能存其一,如果都没有声明的话,编译器默认调用super()

static关键字: static可以修饰属性,方法,代码块,内部类

  • static修饰属性
静态属性/类变量(用staitc修饰)非静态属性/实例变量(不用staic修饰)
为所有对象共有,其中一个对象改变该属性,那么其他对象的该属性也会受影响每个对象都有一份,互不干扰
可以通过"类名.属性名" 或者 "对象.属性名"调用只能通过"对象.属性名"调用
  • static修饰方法
    在静态的方法中只能使用静态的属性或静态的方法
    在非静态的方法中既可以调用静态的属性/方法,也可以调用非静态的属性/方法

  • static修饰代码块

静态代码块非静态代码块
内部可以有输出语句内部可以有输出语句
随着类的加载而加载,而且只执行一次随着对象的创建而执行,没创建一个对象,就执行一次
在静态的代码块只能调用静态的属性和静态的方法在非静态的代码块可以调用静态的属性,静态的方法,非静态的属性,非静态的方法
  • static修饰内部类
    实例化静态成员内部类: 外部类名.内部类名 varName = new 外部类名.内部类名();

final关键字: final可以修饰类,方法,变量

  • final修饰类: 表示该类不能被继承了(绝后了…)
  • final修饰方法: 表示该方法不能被重写
  • final修饰变量: 此时的"变量"就称为一个常量,一旦赋值就不能修改

abstract关键字: abstract可以修饰类,方法

  • abstract修饰类
    1.抽象类不能实例化,生来就是被继承的
    2 抽象类中可以存在构造器,虽然它不能用构造器创建对象(并初始化),但是继承它的子类可以使用它的构造器对对象的属性进行初始化
  • abstract修饰方法
    1.抽象方法没有方法体
    2 包含抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法
    3 子类继承抽象类, 要么全部重写该子类的直接父类和间接父类中定义的抽象方法,要么这个子类也要声明为abstract的
    4 abstract不能修饰静态的方法,私有的方法,final的方法,final的类
举报

相关推荐

0 条评论