Java学习14天(继承封装多态)

封装

高内聚:具体细节自己完成,不允许外界干扰。
低耦合:仅爆露少量的方法给外部使用
改露的露,该藏的藏。应当禁止让用户直接访问一个对象中的数据实际表示,而应通过操作接口访问。
关键字private将属性私有,防止外部访问。
提供一些public的get set方法访问这些数据(即在私有变量方法内写调取赋值方法)
神奇的快捷键:alt+insert快捷生成get和set方法
还可以在set方法设置安全保护,使得数据合乎逻辑

意义

  1. 提高代码安全性,保护数据。
  2. 隐藏代码实现细节。
  3. 统一用户接口,方便使用。
  4. 增加系统的可维护性(便于修改)

继承(类与类之间的关系)

本质:对一批类进行抽象,一个儿子只能有一个爸爸,可以有多个儿子,Java只有单继承,没有多继承。
核心关键字:extends
public class Student extends Person {
}
类似于树一样的关系,继承就是扩展的意思,子类是父类的扩展
如Person是父类,Teacher和Student派生类/子类。
子类可以继承父类的所有方法以及属性。(创建好对象之后,可以调用父类的方法)【继承的前提,是public公开得】
优先级最高优先级public 不写默认default protected优先级高于default 最低优先级 private 一般属性都是私有的,但是留一些public的方法 如get set。供子类使用。

Object

快捷键 ctrl +H 里面有一个Object祖宗类,所有的类都默认直接或者间接继承Object类,不用显式继承

Super

关键字,
在主程序中new一个子类变量,默认调用父类无参构造器(隐藏调用) ,再调用对应类的构造器。
如果想显示调用出来,必须放在把父类super();放在子类调用器的
第一行。
一个类如果书写了有参构造,必须先书写无参构造,如果不书写只能调用有参
注意点

  1. super调用父类方法,必须放在构造方法(构造器)第一个(属性可以不用)
  2. Super必须只能出现在子类的方法或者构造方法中
  3. Super和this不能同时调用构造方法。(因为都要其放在第一行)
    对比this
  4. this代表本身调用者这个对象,super代表父类对象的应用。
  5. this没有继承也可以使用,super必须继承才能调用
  6. this();本类构造,Super();父类构造【调用构造器的方法】

方法重写

父类名 a = new 子类名()
子类名 b = new 子类名()
对于a子类重写了的父类的方法,则调用子类的,没有重写的才调用父类的
b可以调用父类的函数也可以调用子类的函数
但是对构造函数的执行上二者是没有区别的。
重写是指方法的重写,与属性无关

例如A继承了B
A a=new A()
B b=new A() 父类的引用指向了子类是可以的,方法的调用只和左边有关,(前提是静态方法)
静态方法和非静态方法不一样,重写只和非静态方法有关。(因为静态一开始就加载完了)
而且关键词只能是void
总结:

  1. 前提,需要用继承关系,子类重写父类的方法。
  2. 方法名和参数列表必须相同
  3. 修饰符 public 范围可以扩大,不能缩小 public>protected>default(?)>private
  4. 抛出的异常 范围可以被缩小,不可以被扩大
  5. 方法名一致,方法体不同。
    为什么需要重写
    父类的功能子类不一定需要,或者不一定满足
    alt+insert快捷键 override重写

多态(面向对象一个很重要特性)

一个对象的实例类型是确定的,但是它所指向的引用类型不确定。
可以通过父类对象指向new的子类
Student s1=new Student();
Person s2=new Student();
Object s3=new Student();并且可以使用父类的方法
如果子类重写了父类的方法,执行子类的方法
注意事项

  1. 多态是方法的多态,属性没有多态。
  2. 父类和子类之间才有多态,不能强制转换无关类型类型转换异常:ClassCastException
  3. 存在条件 继承关系 按照左边类型执行方法 如果方法在子类重写,执行子类
  4. 父类引用指向子类。
  5. static final private修饰的方法无法重写,便没有多态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值