类: 变量、方法(属性)、构造器
类、对象、成员变量、构造器、方法必须通过对象来调用
1.继承
要点:
- 子类继承(extends)父类,继承了父类的所有成员变量和方法–>减少了代码的重复
- 一个父类可以有多个子类来继承
- 子类一定有,并且只有一个父类
- 如果没有定义父类,默认父类为Object
- 构造器不可以被继承
- 创建子类对象会先创建父类对象,但是这个对象
- 子类继承父类,子类的功能比父类更强大
子类构造器会默认调用父类的无参构造器
super()
Animal a = new Dog();
a首先是一个Animal类型的引用,a又是一个Dog类型的对象
编译器:a是Animal类型 -> 编译时类型
JVM:a是Dog类型 -> 运行时类型
2.多态
1.重载:同一个类中,方法名相同,参数不同,和方法返回值类型相同
2.重写:向上造型,运行时执行的是重写过的方法
——父子类中,方法签名和父类方法签名完全一致,返回值类型也要相同
3.向上造型:只能调用父类类型,想调用子类必须强转
——好处:统一类型
3.封装
成员变量属于个人/私有
私有的——private
将成员变量私有化,提供get/set方法——属性
访问控制符+修饰词+类/方法名/变量名
类加载:将类的字节码信息加载到JVM方法区中的过程
类加载时间:(类使用之前)
1.new对象
2.new子类对象,父子类会依次加载
3.调用类的时候就有静态成员变量
访问控制符
- static:静态的, 和类相关、不需要对象
1.修饰成员变量
存储在方法区中,所有这个类的对象公用的,只有一份有类的时候就有静态成员变量
2.修饰方法
通过类名调用,不能直接使用普通的
3.静态代码块
类加载的时候调用,需要加载大量资源的时候使用
4.修饰内部类 - final:最终的,不能别修改的
1.修饰变量(成员变量/局部变量)
是常量故不可被修改
字面量(如:1、2、3.14、true、false、null等)
使用之前必须初始化
final成员变量初始化:1.每个构造器中 2.代码块中 3.声明的同时
2.修饰方法
不能被子类重写
3.修饰类
不能被继承 - static+final:修饰成员变量——静态的常量,在声明的同时、代码块中初始化
- abstract:抽象类的意义——被继承——故与final不可同时用
1.修饰类
抽象类(可以有抽象方法的类)-> abstract修饰的类
可以有子类,提供给构造器默认调用
不能实例化,靠子类来实例化
final成员变量初始化:1.每个构造器中 2.代码块中 3.声明的同时
2.修饰方法
抽象方法:不能实现的方法,不知道具体实现;没有方法体,靠子类来实现/重写
有抽象方法的类一定是抽象类 - interface:接口(一个特殊的抽象类)
没有构造器,不能实例化
意义:被实现——implements——扩展功能
方法默认:public abstract
变量:public static final
类与接口之间的关系
类-类 | extends 1-1 |
---|---|
类-接口 | implements 1-n |
接口-接口 | extends 1-n |
接口-类 | 类无法被接口继承/实现 |