上一阶段学完了String和面向对象,这一阶段先学面向对象进阶上半部分,下一阶段学习下半部分。
static关键字
static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。
被static修饰的成员变量,叫做静态变量(特点:被该类所有对象共享;调用方式:类名调用(推荐)/对象名调用。
被static修饰的成员方法,叫做静态方法。
特点:多用在测试类和工具类中,JavaBean类中很少会用。
调用方式:本类中方法名调用/类名调用(推荐)/对象名调用。
工具类 1,类名见名知意 2,私有化构造方法
是一类帮助我们做一些事情,但是不描述任何事物的类。
JavaBean类 用来描述一类事物的类。比如student,teacher,dog,cat等。
测试类 用来检查其他类是否书写正确,带有main方法的类,是程序的入口。
static的注意事项
静态方法只能访问静态变量和静态方法
非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法。
静态方法中不能使用this关键字
继承
Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。
public class student extends person{}
student称为子类(派生类),person称为父类(基类或超类)
使用继承的好处
可以把多个子类中重复的代码抽取到父类中了,提高代码的复用性。
子类可以在父类的基础上,增加其他的功能,使子类更强大。
如何使用继承:当类与类之间存在相同的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。
格式:public class 子类 extends 父类{}
继承的特点
Java只支持单继承,不支持多继承,但支持多层继承。
单继承:一个子类只能继承一个父类。
不支持多个继承:子类不能同时继承多个父类。
多层继承 子类A继承父类B,父类B可以继承父类C
例如:儿子不能同时继承父亲和叔叔/儿子可以继承于父亲,父亲可以再继承于爷爷
每一个类都直接或间接继承于Object
子类只能访问父类中非私有的成员
成员方法是否可以被继承
虚方法表 非private 非static 非final
子类能继承父类中的那些内容
构造方法 非私有不能 private不能
成员变量 非私有能 private能
成员方法 虚方法表能 否则不能
继承中成员变量的访问特点:先在局部位置找,本类成员位置找,父类成员位置找,逐级往上
成员变量的访问特点:就近原则(谁离我近,我就用谁)
super关键字
super指父类中的成员,调用方式:super.类名
成员方法的访问特点:就近原则
方法的重写
当父类中的方法不能满足子类现在的需求时,需要进行方法重写
书写格式
在继承体系中,子类出现了和父类中一摸一样的方法声明,我们就称子类这个方法是重写的方法。
@Override重写注解
1,@Override是放在重写后的方法上,校验子类重写时语法是否正确。
2,加上注解后如果有红色波浪线,表示语法错误。
方法重写注意事项和要求
1,重写方法的名称,形参列表,必须与父类中的一致,
2,子类重写父类方法时,访问权限子类必须大于等于父类(空着不写<protected<public)
3,子类重写父类方法时,返回值类型子类必须小于等于父类
4,私有方法不能被重写
5,子类不能重写父类的静态方法,如果重写会报错
继承中构造方法的访问特点
父类中的构造方法不会被子类继承。
子类中所有的构造方法默认先访问父类中的无参构造,在执行自己。
原因:子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。
子类构造方法的第一行语句默认都是:super(),不写也存在,且必须在第一行。
如果想调用父类有参构造,必须手动写super进行调用。
this关键字:理解为一个变量,表示当前方法调用者的地址值
super:代表父类存储空间,使用时会进入父类存储空间。
上篇先记到继承,下篇从多态记到结束。
如果有不对的地方,还请各位学长学姐指出来,感激不尽