java基础二-面向对象的三大特性
面向对象的是三大特性
封装
一.概念
将类的信息隐藏在类的内部,不允许外部程序直接访问,通过类提供的方法实现对隐藏信息的操作和访问
封装的两大原则
- 尽可能多的东西藏起来对外部提供一个便捷的接口
- 所有属性藏起来
二.封装的步骤
1.定义私有属性
2.生成getter()/setter()方法封装 右键-generate getter/setter 获取到属性 赋值属性
3.创建一个有参构造和无参构造 右键 generate Constructor
4.生成toString方法 右键 generate toString
类的访问修饰符
static修饰符
- 成员方法
- 静态方法,可以直接通过类名访问
- 代码块
- 静态代码块,当java虚拟机加载类时,自动执行该代码块
- 成员变量
- 静态变量,可以通过类名访问
结果:静态代码块 10
继承 extends
继承就是子类继承父类的特征和行为,是的子类对象(实例)具有父类德实例域和方法,或者子类从父类集成方法,是的子类具有父类相同的行为.
继承父类方法并调用
类继承的特点
1. java只支持单继承
2.支持多层继承(继承体)
3.子类可以使用父类,父类不允许使用子类
继承的注意事项
1.只能继承public和protected修饰的属性和方法(不管子类父类是否在同一个包里)
2.子类不能继承父类的构造方法
3.子类可以拥有自己的属性和方法,子类可以对父类进行扩展
this super的区别和应用
this:代表当前引用
super:代表父类的引用
输出:10 30 20
继承构造运行机制
子类中所有构造方法都会默认访问父类的构造方法
子类会继承父类的数据,可能子类的饿数据,所以在初始化子类前还会初始化父类
输出:Father的无参构造方法 son的无参构造方法
多态
多态是同一个行为具有不同表现形式或形态的能力
非静态属性的重写
三个特点
1. 要有继承
2.要有重写
3.父类引用值项子类的对象 Animal a = new Dog(); 父类引用子类对象 ##成员变量没有重写的概念
输出:啃骨头
多态成员的特点
1. 静态属性 没有多态
2.非静态属性 没有多态 ====> 不涉及重写
3.静态方法 没有多态
静态方法的白哦用是用变量类型的类名去调用 (变量类型 变量 = new 对象)
向上转型
1. <父类型><引用变量名> = new <子类型>();
2.此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法
3.此时通过父类引用变量无法调用子类特有的方法
向下转型
1. <父类型><引用变量名> = (<子类型>)<父类型的引用变量>;
2.在向下转型的过程中,如果没有转化为真实子类类型,会出现类型转换异常
多态的优缺点
优点:提高了代码的扩展性和可维护性
缺点:无法直接访问子类特有成员