学习编程也有3年了,还是对面向对象中的1些基础的知识了解的不是很深入,最近抽出时间又1次巩固了1下,特此总结1下。
1.为何静态方法没法访问非静态成员
由于静态方法属于类,非静态成员属于对象,所以静态方法将不知道关于其所属类的对象的信息
2.为何非静态方法可以访问静态成员
非静态成员的生命周期被静态成员生命周期包括,因此当非静态成员存在的时候,静态成员绝对存在。故非静态成员在任什么时候候都可以访问静态成员
3.Final变量的注意事项
1.final的成员变量必须为其初始化
2.对原始类型,1旦赋值以后,该值就不能修改,
3.对援用类型,1旦赋值以后,将不能重新来援用另外1个对象,但是可以修改其援用对象的成员变量
4.final局部变量,可以只声明而不初始化,1旦初始化值不能被修改
5.当final修饰类时,其含义是该类不能再被拆分,任何其他类都不能继承final修饰的类
6.一样方法修饰的方法,也是这样,子类将不能重写该方法,只能继承
4.为何要有静态变量的存在
由于总有1些方法,行动与结果不依赖于对象的状态
5.成员访问修饰符
可见性 |
public |
protected |
默许 |
private |
对同1个类 |
是 |
是 |
是 |
是 |
同包中的任何类 |
是 |
是 |
是 |
否 |
包外所有非子类 |
是 |
否 |
否 |
否 |
包中子类继承访问 |
是 |
是 |
是 |
否 |
包外子类继承访问 |
是 |
是 |
否 |
否 |
6.抽象类与抽象方法
1.抽象方法只能存在于抽象的类中,非抽象类中不能存在抽象方法
2.抽象方法的声明,是没有方法体的。最后用分号结束。
3.抽象类中的非抽象方法常常是抽象类所有未来子类所具有的。且不会由于子类的不同而具体实现不同的方法。
4.当某类继承自抽象类时,如果其本身不是抽象类,则必须实现所继承抽象类中的抽象方法。
5.抽象类只能继承1个父类,但是可以实现多个来自任何地方的接口
6.抽象类中必须有1个无参数的构造函数,默许会有1个,但是如果定义新的话,会覆盖。
8.接口
1.接口中只能定义常量属性,这样才能保证实现接口的任何类都可以访问相同的属性,不能动态将其值随便修改。
2.接口中方法与不能用static和final修饰
3.接口只能继承接口,不能继承类
9.构造器履行流程
1.1旦编写了任意1个构造器,不管是不是是有参数的构造器,系统都不会再提供默许的无参数的构造器。
2.构造器是不能被继承的
3.创建子类时,会走父类中默许的构造函数,不管子类创建的时用的是哪一个构造函数