java中的修饰符总结

类修饰符

public 访问控制符,将一个类声明为公共的,可以被外界访问,一个程序的主类必须是公共的,且只能有一个.
abstract 将一个类声明为抽象类,类里的方法是抽象方法,没有方法体,需要子类继承以后去实现
final 将一个类被声明为最终的,不能被其他类继承**

成员变量修饰符

public 修饰变量是公共的,可以被任何对象访问,
private 私有访问控制符,指定变量只能让自己的类中的方法进行访问,其他任何类中的方法都不可以直接访问
protected 保护访问控制符,指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量
final 最终修饰符,指定此变量的值不能变。用其修饰后成为常量
static 静态修饰符,指定变量被所有对象共享,全局唯一,变量属于这个类.直接被类名调用,

方法修饰符

public 公共控制符,可以被任何的对象访问
private 私有控制符,指定此方法只能在本类中进行访问调用,其他的类不能访问,包括子类
protected 保护控制符,指定该方法可以被它和它的子类进行访问,其他的不可以访问
final 方法被final修饰以后,,能被继承,但是不可以被重写,可以重载
static static修饰方法之后,不需要实例化对象就可以直接用类名进行调用

疑问:

1 一个方法的声明中哪些修饰符是可以同时存在的?哪些是不可以同时存在的?原因是什么?

private abstract  void say() ;//报错
private:被私有化后,子类无法重写,与abstract相违背。
public static final void say() {
		System.out.println("say");
	}//这是一个静态的最终的方法,不可以被重写的哦
static 和 final 可以同时存在的哦
public abstract static final void say();
public abstract static  void say();
public abstract  final void say();
但是 abstract 和 static , abstract 和 final 就不可以同时存在的
  

原因: 一个方法被 abstract 修饰以后,这个方法坐在的类就是一个一个抽象类,而抽象类通过子类去实现,需要发生继承,然后去重写抽象方法,但是,被 final 修饰的方法是可以继承的,但是不能重写,只是在本类中可以进行重载. 同样被 static 修饰的方法,可以被继承 ,但是不能被重写.也可以重载.

2 方法中访问控制符在重写的时候需要注意什么?

​ 被重写的方法的访问权限必须大于等于父类方法的访问权限.

3 方法的重载和方法的返回值类型没有关系,只和参数列表有关系.

	public  void say() {
		System.out.println("say");
	};
	public  int say(int a ) {
		return a;
	}
	public  int say(int a,int b ) {
		return a;
	}//参数个数不同
	public  String say(String str ) {
		return str;
	}//参数类型不同
	public  int say(int a,String b ) {
		return a;
	}
	public  String say(String str,int b ) {		
		return str;
	}//参数顺序不同

posted on 2020-05-14 16:23  liqiangbk  阅读(235)  评论(0编辑  收藏  举报

导航