面向对象的三大特征
---1,继承
1,思想
1,现实中指晚辈继承或接收长辈的物质或精神
2,代码中指子类继承父类的所有属性和方法,构造函数除外
2,体现
语法:
public class 子类名 extends 父类名{
子类特有的属性
子类特有的方法
}
1. 子类 【super关键字】
使用位置:子类中使用
概念:谁调用super所在的方法,super就表示谁的父类对象
场景:
1,在子类构造函数中调用父类的构造函数
语法:super(实参列表);
注意:1,只能在构造函数的第一行
2,子类中没有明确写出调用父类构造函数,默认调用父类的无参构造函数
2,当子类属性名与父类属性名相同时或子类重写父类方法时,在子类中调用父类属性或重写的
方法,使用super调用
语法:
调用属性:super. 属性名
调用方法:super.方法名(实参列表);
2. 父类【又名:基类】
例:
class A{}
class B extends A{}
B是A的子类
A是B的父类
Object是A,B的父类
Object是A的直接父类,是B的父类
注意:1,一个类如果没有明确的继承关系,其默认为继承于object类
2,object是所有类的父类
3,Java中的类只能单继承
---2,封装
1,思想
包装【好处:1,保护内部 2,方便使用】
2,体现
变量:一个基本的变量封装一个值
数组:一个数组封装了一组数据类型相同的数据
方法:封装了一段代码
类:封装了多个属性,方法,构造函数.....
对象:封装了多个属性值.....
Java文件:封装了多个类
包:封装了多个Java文件
项目:封装了多个包
.....
1. 访问权限修饰符
关键字 作用 中文名
public 当前项目中都可用 公共的
protected 同个包中或继承关系中可用 受保护的
默认的 同个包可用 默认的
private 当前类中可用 私有的可以修饰:属性,方法,构造函数,类
注意:目前所有的类不能使用private修饰
2. 包与导包【关键字:package】
包:文件夹
导包:A类与B类不在同一文件下,B中使用A,此时需要在B中导入A
所在的包;
语法:
import 包名. 类名;
import 包类. *;
---3,多态
1,思想
一个事物的多种形态【事:方法; 物:对象】
2,体现
1. 方法
1,重写
要求:
1,在继承关系中,子类方法与父类方法
2,子类访问权限修饰大于等于父类的访问权限修饰符
3,返回值类型相同
4,方法名相同
5,形参列表相同
6,方法体不同
2,重载
要求:
1,同一个类中
2,方法名形同
3,形参列表不同
2. 对象
子类对象转父类对象:自动转换
父类对象转子类对象:强制转换
可能会出现:ClassCastException(类型转换异常)
---4,instanceof关键字:
作用:判断该对象是否属于该类
注意:对象与类之间必须有继承关系
语法:
boolean 变量名 = 对象名 instanceof 类名;