标签:重写 Java 面向对象 子类 方法 访问 父类 super
Java面向对象
封装
属性私有(private)
定义
- 该露的露,该藏的藏
- 程序设计追求高内聚,低耦合.
- 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉.
- 低耦合:仅暴漏少量方法给外部使用.
- 程序设计追求高内聚,低耦合.
- 封装(数据的隐藏)
- 通常,应该禁止直接访问一个对象中数据实际表示,而应通过操作接口来访问,这称为信息隐藏
- **属性私有,get/set(有时会设置安全性限制判断)
意义
- 提高程序安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护性增加了
继承
定义
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模.
- extends 的意思是"扩展",子类是对父类的扩展
- JAVA中的类只有单继承,没有多继承
- 一个儿子只能有一个爸爸,但一个爸爸可以有多个儿子
- 继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖.组合,聚合等
- 继承关系的两个类 ,一个为子类(派生类),一个为父类(基类).
- 子类继承父类,使用关键字extends来表示
- 子类和父类之间从意义上讲应该具有" is a "关系.
子类继承父类就拥有父类的全部方法.
私有的属性无法继承
super详解
作用
就是在方法名和属性名相同时,在子类里使用
super.属性名方法名
采用的是父类里面的属性和方法.
没有super当前缀时采用的是当前子类的属性和方法
私有的东西无法被继承,也无法用super访问.
当创建无参构造器时,子类和父类都有无参构造器时执行子类的无参构造器,默认会先执行父类的无参构造器
隐藏代码:调用父类的无参构造器,必须放在子类构造器的第一行
一个构造函数中不能同时出现this和super两种方法是因为this函数中也有super,这会导致初始化两次,数据不安全
若父类只有含参构造器,没有写无参构造的话,在子类无参构造中想要不报错,就得显示调用父类含参构造
super注意点
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
Vs This
代表对象不同
this 本身调用这个对象
super 代表父类对象的应用
前提
this 没有继承也可以使用
super 只能在继承条件才可以使用
构造方法
this();本类的构造
super();父类的构造
Java四种访问权限
-
private : Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
-
default: 即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问。
-
protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护访问权限”。被其修饰的属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
-
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包访问。
原文链接:https://blog.csdn.net/VariatioZbw/article/details/107126074
IDEA(使用ctrl+h)查看关系网
重写
重写是方法的重写和属性无关
子类可以转成父类,但父类不能转成子类
- 静态方法 :方法的调用只和左边,定义的数据类型有关
- 非静态方法 重写
Student stu = new Student();
override 重写
总结
- 需要有继承关系,子类重写父类的方法
-
方法名必须相同
-
参数列表必须相同
-
修饰符,范围可以扩大但不能缩小.
public>protected>default>private
-
抛出异常:范围:可以被缩小但不能扩大;ClassNotFoundException-->Exception(大)
重写子类方法和父类方法名必须一致,方法体不同.
为什么需要重写:
- 父类的功能,子类不一定需要,或者不一定满足!
Alt+Insert override
多态
-
即同一方法可以根据发送对象的不同而采用多种不同的行为方式
-
一个对象的实际类型是确定的,但可以指向的对象的引用的类型很多
-
多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
-
注意: 多态是方法的多态,属性没有多态性.
标签:重写,Java,面向对象,子类,方法,访问,父类,super 来源: https://www.cnblogs.com/yuxxiao/p/16209924.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。