一、四大特征
1) 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。
2) 继承:继承是从已有类得到继承信息创建新类的过程。被继承的类叫父类,继承的类叫子类,子类继承父类大部分的属性、方法,private方法除外,子类可以扩大父类的访问权限,缩小不行。
3) 封装:把对数据的操作封装成一个方法或一个类。
4) 多态:多态是指允许不同子类型的对象对同一消息作出不同的响应。有参数的多态,返回类型的多态。
二、方法重载、方法重写
方法重载
1、方法名相同
2、方法的参数类型,个数,顺序至少有一项不同
3、只是返回类型不一样,不能够构成重载,只是控制访问修饰符一样,也不能构成重载
方法覆盖
1、就是子类有一个方法,和父类的某个方法的名称,返回类型,参数都一样,那么我们就说子类的这个方法覆盖了父类的那个方法
2、子类方法不能缩小父类的访问权限,扩大可以
三、抽象类与接口
抽象类和接口的区别有哪些?
- 抽象类中可以没有抽象方法;接口中的方法必须是抽象方法;
- 抽象类中可以有普通的成员变量;接口中的变量必须是 static final 类型的,必须被初始化 , 接口中只有常量,没有变量。
- 抽象类只能单继承,接口可以继承多个父接口;
- Java8 中接口中会有 default 方法,即方法可以被实现。
相同:
1、接口,抽象类都不可实例化
2、继承或实现后都必须实现所有方法
抽象类和接口如何选择?
- 如果要创建不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类。
- 如果知道某个类应该是基类,那么第一个选择的应该是让它成为一个接口,只有在必须要有方法定义和成员变量的时候,才应该选择抽象类。因为抽象类中允许存在一个或多个被具体实现的方法,只要方法没有被全部实现该类就仍是抽象类。
四、static、final、实例变量
类变量与实例变量的区别:
1、加上static称为类变量或静态变量,否则称为实例变量
2、类变量是公共的属性,实例变量是对对象个体的属性
3、类变量通过类名.类变量名或对象名.类变量名访问
4、Java中规则,静态变量原则上用静态方法去访问(用同样的static)
final:
1、修饰类,表明该类不可继承
2、修饰方法,表明该方法不可重写
3、修饰变量,表明该变量为常量
五、构造方法和this
构造方法:
1、 方法名和类名相同
2、 没有返回值
3、 可以有很多个,必须要有一个
4、 构造方法不能被继承
this:
1、this只能在类定义里运用,
2、谁调用this,this就是谁;