1.访问控制修饰符
其实看太多的文字定义完全是浪费时间,一张图就能将访问控制修饰符解释清楚
访问权限 | public | protected | default | private |
本类 | √ | √ | √ | √ |
本包 | √ | √ | √ | × |
子类 | √ | √ | × | × |
不同包 | √ | × | × | × |
public:都可以访问;
protected:本类、本包以及所有子类中可以访问;
defalut:本类、本包中访问;
private:只能在本类中访问。
私有化成员:用private关键字修饰的成员变量和成员变量没有继承,子类不能直接调用,被private修饰的成员只能在本类中被访问; (即封装)
调用方法:1.子类继承父类中提供setter和getter方法;
2. 调用父类的有参构造方法可以对父类的私有化成员进行赋值。
它们的优先级是:public-protected-默认-private
2.abstract关键字
用来修饰抽象类
抽象类定义格式:
abstract class 类名{
}
抽象方法的格式:修饰符 abstract 返回值类型 方法名();//没有方法体,以分号结束
注意!!!
1. Abstract关键字不与final关键字连用,abstract没有方法体,就是用来继承的,而final不能继承
2. Abstract关键字不与static关键字连用,static方法->类名.方法名调用,抽象类无方法体,调用干嘛?用来做继承的
3. Abstract关键字不与Private关键字连用,因为Private关键字不能继承
3.final关键字
1.final变量:局部变量和成员变量都只能赋值一次;
a:成员变量可在定义时直接赋值;
b:声明时不赋值,在(constructor(构造代码块))构造方法中赋值
2.final方法:不能被重写;
3.final类:不能被继承。
4.static关键字
对于多个对象拥有相同的属性值,多次赋值很麻烦,希望做到一次赋值多次使用,属性加上static,相当于该属性是该类的所有对象所共享。
特点:静态修饰的成员变量,只有一份,被所有对象共享
静态的内存分析:static修饰的成员,class文件中和堆内存中保存的都是静态标记(地址),该静态成员变量真正的值在 静态区
静态方法:类名.方法名()调用
静态方法内不能访问非静态成员变量(或是非静态成员方法),因为静态方法优先于对象产生,所以在方法内不能出现this和super(指代的是对象),同时不知道this,super指代哪个对象(静态变量被所有对象共享)
无论是变量、方法还是代码块,只要用static修饰,就是在类被加载时就已经“准备好了”,也就是可以被使用或者已经被执行,都可以脱离对象而执行。反之,没有static,则必须是依赖于对象。详细了解static,请点击
https://blog.csdn.net/u012152619/article/details/46003303?ticket=ST-8336-vfdc6DSIM6QenBAmwIsN-passport.csdn.net