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;
}//参数顺序不同