JAVA篇:修饰符与接口、类、方法、成员变量、局部变量、方法块 (2)

  synchronized(同步的):修饰方法和方法块

2.2 修饰符与继承: 2.2.1 public,protected,default(缺省、friendly),private

  public是指公共的,不限制访问和继承、重写。

  protected:是指受保护的,修饰成员变量、构造方法、方法,只能本包和子类访问。可以被继承、重写。

  default(缺省、friendly):限制只能本包访问。不可被继承。

  private:是指私有的,只可在类中的方法访问,不可被继承,不可被外部调用。私有类必须定义在类的内部。私有的构造方法一般有特殊用途,如单例模式。

注:这里的访问权限并不涉及反射机制相关的访问问题,而且,若是公共方法调用私有变量这种过程可以分解为:外部调用类的公共方法,类内部的公共方法调用私有变量,并不违背修饰符的访问限制。

2.2.2 static(静态的)和 final (不可改变的)

  static修饰的成员变量、方法、方法块和类绑定而不是和类的实例绑定。而static修饰的变量、方法可以被继承,不可以被重写。若是在子类实现了同名的方法,那也只是子类的方法,而不是将继承自父类的方法重写,变量绑定时,父类变量只会调用父类的静态方法,具体如下:

/* 被实现的接口、抽象类以及被继承的父类的变量可以指向子类的实例,但是“成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边。” */ FClass f = new CClass();//CClass是FClass的子类 /* 那么f指向的对象: 1、静态方法、变量:编译和运行的都是FClass的静态方法、静态变量 2、非静态方法、变量:编译的是看父类FClass,父类有的方法、变量,f指向的对象才会有, 运行的时候看的是子类CClass,子类若是对父类的该方法进行了重写,就按重写之后运行 ​ */

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxgdp.html