封装
对象代表什么,就得封装对应的数据,并提供对应的行为
比如封装学生类,对应的数据可以是姓名,年龄等,提供对应的行为可以是各种方法(学生在学习)。
继承
当类与类之间存在相同的内容,并满足子类是父类的一种,就可以考虑继承
只需要在类名后面加extends 父类名
JAVA只支持单继承,不支持多继承,但可以多层继承
构造方法:非私有不能继承,私有不能继承
特点:
1.不能继承但可以通过super调用
2.子类构造方法第一行有super();
3.默认先访问父类中无参构造的构造方法,再执行自己
4.如果想要父类的有参构造需要手动书写
成员变量:非私有可以继承,私有也可以继承(能继承但不一定能调用)
成员方法:非私有可以继承,私有也不能继承(不够准确)
准确来说成员方法可以继承虚方法表上的内容,非虚方法表的不能继承
虚方法表:非private,非final,非static
方法重写
本质就是把虚方法表上同样的方法给覆盖
在方法重写前加上@Override可以提前报错方便检查
注意:
1.重写方法名和形参要与父类保持一致
2.访问权限子类必须大于等于父类
3.返回值类型子类必须小于等于父类
4.只有添加到虚方法表上的方法才能重写
this关键字
表示当前调用者的地址值
遵循就近原则
super关键字
代表父类的存储空间
关键字 | 访问成员变量 | 访问成员方法 | 访问构造方法 |
this | this.成员变量 访问本类的成员变量 | this.成员方法() 访问本类成员方法 | this() 访问本类构造方法 |
super | super.成员变量 访问父类的成员变量 | super.成员方法() 访问父类成员方法 | super() 访问父类构造方法 |
多态
同种类型表现出多种形态
多态调用成员的特点
变量调用:编译看左边,运行也看左边
方法调用:编译看左边,运行也看右边
多态的优势与弊端
优势:使用父类作为参数可以接收所有子类对象
弊端:不能使用子类特有功能(只能通过强转)
包
其实就是文件夹,命名规则:公司域名反写+包的作用,全英文小写
使用其他类规则
1.使用同个类不需要导包;
2.使用java.lang包中的类,不需要导包;
3.其他情况需要导包;
4.如果两个包中有两个同类名,需要全类名
Final
用在变量中;
用在类中;
用在方法中;
权限修饰符
一般用private和public就可以了;
*成员变量私有;
*方法公开;
特例:如果方法中的代码是抽取其他方法的共性代码,那这个方法一般私有;
修饰符 | 同一个类中 | 同一个包中不同类 | 不同包中的子类 | 不同包中的无关类 |
private | 可以用 | |||
空着不写 | 可以用 | 可以用 | ||
protected | 可以用 | 可以用 | 可以用 | |
public | 可以用 | 可以用 | 可以用 | 可以用 |
静态代码块
static{}随着类的加载而加载,并且只执行一次。