- 代码块
- 局部代码块:写在方法里面的代码块,局部代码块限定了变量的作用域和生命周期
- 构造代码块:作用是用于对对象进行统一初始化,无论创建对象的时候调用哪个构造方法,构造代码块中的代码必定执行,而且会先于构造方法中的代码执行
- 静态代码块:加static修饰的代码块,随着类的加载而加载,只会执行一次,一般用于初始化类的信息,会先于构造代码块执行。
- 继承
- java中的所有类都继承于Object类,所以java中的所有类的对象都可以使用Object类的成员方法;
- 子类继承于父类之后,就可以拥有父类非私有的成员变量和方法;
- 在java中,一个类只允许有一个父类,不允许多重继承;
java支持多层继承:A继承于B,B继承于C,于是,A继承于B,间接继承于C;
- 子类和父类拥有同名的成员变量,则创建子类对象实际上拥有两个不同的相同名字的成员变量信息,一个是属于父类的信息,一个数属于子类的信息。如果要获取子类自己的成员变量,则使用this.name;如果要获取父亲的成员变量,则使用super.name
- 如果子类的构造方法中要调用父类中的构造方法,需要使用super关键字,如果使用super()则表示调用父类无参的构造方法;如果使用super(参数1,参数2),则表示调用父类对应参数的构造方法
- 重写@Override关键字
- 重写父类的方法,重写是指父类中的方法和子类中的方法可以有不同的实现
- 在继承关系或者实现接口的关系中才存在方法的重写
- 父类中的私有方法不能重写
- 重写和重载的区别:
- 重写是指子类重写父类的方法,方法一样,但是拥有不同的行为
- 重载是指方法名相同方法中的参数不同
- final:最终的
- 凡是以final修饰的变量不可以被修改
- 凡是以final修饰的方法不可以被重写
- 凡是以final修饰的类不可以被继承
- Super关键字
-
作用:
- 主要存在于子类方法中,用于只想子类对象中父类对象
- 访问父类的属性
- 访问父类的函数
- 访问父类的构造函数
-
使用
- 子类隐式调用父类构造函数,子类的构造函数默认第一行会默认调用父类无参的构造函数,隐式语句:super();
- 子类显示调用父类构造函数,在子类构造函数第一行通过super关键字调用父类任何构造函数。如果显式调用父类构造函数,编译器自动添加的调用父类无参数的构造就消失。构造函数间的调用只能放在第一行,只能调用一次。super()和this()不能同时存在构造函数第一行。
例如:
- 面向对象:封装、继承、多态
- 多态:事务存在多种表现形态
-
多态的三个条件:
- 要有子类继承父类
- 要有方法的重写
- 要有父类的引用指向子类对象
-
多态注意事项
- 多态情况下访问的非静态方法默认情况下是子类的方法
- 多态情况下访问的同名的静态方法是父类的 方法
- 多态情况下访问的成员变量(静态/非静态)是父类的信息
- 多态情况下如果想要访问子类自己的成员变量/方法,则需要强转
- 多态的应用场景:一般情况下用于方法的入参或者方法的返回值
- 抽象类
- 加abstract修饰的类就是抽象类,加abstract修饰的方法就是抽象方法
- 抽象类不可以直接创建对象,抽象类的用途是给子类使用的
- 抽象类中可以有非抽象方法,但是有抽象方法的一定是抽象类
- 抽象类的子类要么继续是抽象类,要么得重写抽象类所有的抽象方法
不能和abstract共存的关键字:private、final、static
- 接口:interface
- 接口是一组需求的描述
-
接口的作用:
- 为一个类新增功能
- 定义一组约束或者规范
- 为程序解耦
-
接口的注意事项:
- 一个类可以实现多个接口
- 接口是可以继承另外一个接口的,接口是可以多继承的
- 不能根据接口名创建对象,接口没有构造方法
- 接口中的成员变量默认是pubilc static final
- 接口中的方法默认是public abstract