java面向对象
java面向对象
封装
概述:将类中成员私有化,不向外界透露。提供公有的方法让外界使用
private 关键字
- 权限修饰符
- 特点 被private修饰的成员,外界无法直接获取
- 修饰的内容
- 修饰成员变量
- 修饰构造方法
- 修饰成员变量
this关键字
- 概述 表述调用但钱方法的对象,当前类的引用
- 访问内容
- 成员变量 this.成员变量
- 构造方法 this()
- 成员方法 this.成员方法()
方法的重载
在同一个类中,方法名相同 参数列表不同,与返回值不同的现象
static关键字
- 概述 被staic修饰的内容 被类所有对象共享,属于类成员
- 特点 被staic修饰的内容,可以直接通过类名的方式访问
- 修饰对象
- 成员变量
- 成员方法
- 成员内部类
代码块
- 局部代码块 {} 在方法中定义
- 构造代码块 {}在类中方法外定义
- 静态代码块 staic{} 在类中方法定义
- 同步代码块
- 运行顺序 静态代码块-->构造代码块-->构造方法
继承
概述
将多个类中相同的部分提取到单独的一个类中,其他类与这个类产生继承关系。
extend 关键字
- class A extends B{}
- A 子类/派生类
- B 父类/超类/基类
特点
- java中的雷雨类之的继承不允许多继承,只允许单继承
- java中类与类之间允许多重继承,形成继承体系
- 子类无法继承父类中的私有成员
- 子类无法继承父类中的构造方法
super关键字
- 用途 在子类中使用直接父类的成员(成员变量/构造方法)
- super
- 成员变量 super 成员变量
- 构造方法 super()
- 只能出现在子类中构造方法的第一句
- 默认子类构造方法第一句是super()
- 成员方法 super.成员方法()
方法的重写
- 在继承关系中 子类方法声明(返回值类型,方法名,参数列表) 与父类的方法一摸一样,只是实现不一样
- 注意事项
- 父类中的私有方法无法重写
- 父类中的静态方法无法重写
- 检查是否能重写使用@override
- 子类重写时,方法的权限修饰符不能比父类的还要低
final关键字
修饰内容
- 类 修饰类 类不能不继承
- 变量 变量变自定义变量 只能在构造方法结束前赋值一次
- 成员方法 方法不能被重写,但是子类可以使用
多态
概述
在一个事物的不同时刻下的不同状态
前提
- 要有继承关系
- 要有方法的重写
- 要有父类的引用指向子类对象
多态的好处
- 提高了程序的维护性(由继承提供)
- 提高了程序的扩展性 (多态)
向下转型
为了解决多态无法访问子类中特有的方法
abstract关键字
主要是为了实现现实生活中一些无法实例化的事物
修饰的内容
- 类
- 类为抽象方法,不能实例化
- 抽象类中既可以存在抽象方法,也可以存在具体实现的方法
- 方法
- 方法为抽象方法。没有方法体,连大括号都没有
- 有抽象方法的类一定是抽象类
抽象类的实例化
- 抽象类可以继承抽象类,可以选择性的重写方法
- 具体的类继承抽象类,必须重写所有的抽象方法
interface接口
概述 主要是为了提供一个类的扩展功能,可以看作一个特殊的类
特点
- 成员变量必须被final 修饰的 默认添加 public static final的修饰符
- 成员方法在jdk1.8之前必须是抽象方法,默认会添加public abstrct修饰符
接口实例化
- 抽象类实现implements 接口,可以选择性的重写方法
- 具体类实现implements接口 必须重写所用抽象方法
注意事项
- 接口与接口之间是继承关系,可以进行多继承
- 一个类可以在继续一个类的同时实现多个接口
内部类
- 成员内部类
- 创建对象: 外部类名。内部类名= new 外不类名().new 内部类名();
- 静态内部类 外部类名。内部类名= new 外不类名. 内部类名();
- 局部内部类
- 将类定义在方法内部
- 注意 方法定义的变量,在局部内部类中是不可以变,默认加上了final 关键字
- 匿名内部类 new 类/抽象类/接口()