//***********************封装
封装步骤
1.将属性进行私有化(private)
2.提供一个公共的(public)set方法,用于对属性判断赋值
public void setXXX(类型 参数名) {可加入验证判断语句,属性= 参数}
3.提供公共的get方法,用于获取私有化的属性
封装使得类中只有一个入口set和出口get(return),保密性好
==============================================================
//**********************继承
¥¥¥¥¥¥一.继承介绍(为什么要使用继承):继承可以解决代码复用问题,当多个类存在相同的方法或者属性时,
可抽出相同的属性或方法作为父类,在父类中同意定义,子类就不需要再去定义,直接访问即可
基本语法
class 子类名 extends 父类名 {}
子类会自动拥有父类的方法属性
二.
//********************继承细节
1.子类继承了父类所有的属性和方法,非私有的属性、方法可在子类中直接访问,但私有的
不能直接访问(private只能在本类中访问),若想访问私有的,需要在父类中使用类似封装的操作
即设置出口get方法
2.子类必须调用父类的构造器完成父类的初始化
创建子类对象时(在主类中进行的操作),会进入子类的构造器,Java规定(如果不使用super指定父类构造器),
默认情况下会调用父类的无参构造器。如果父类没有提供无参构造器(或者被覆盖),
就必须在子类中super指定用父类中那个构造器完成初始化工作。否则编译不通过*****
【例如】
public A() { (此处隐含super(),会先调用父类无参构造器)在执行下面语句
System.out.println("调用了子类A构造器")}
3.super可以指定调用父类的构造器用法super("张国栋");
4.super在结合构造器使用时,必须放在构造器中的第一行
5.super和this都只能放在构造器第一行,所以二者不能共存
6.Java所有类都是Object类的子类,Object是所有类的基类
7.父类构造器的调用不限于直接父类(上一级的父类),如果找不到,会一直追溯到Object类
***子类中查找父类的规则***(有点逆回溯的感觉)
分两种查找情况,直接调用父类属性或方法,
通过super调用父类属性、方法。二者区别是从哪开始(子类本身)或父类
Ⅰ.先看子类是否有该属性
Ⅱ.如果子类有且可访问(因为程序执行在主类中执行),则返回信息,查找停止
Ⅲ.如果子类没有,就去上一级父类找,重复操作二,直到Object类,当出现找到属性,但该属性被私有化,
则会报错,找到顶级父类还没找到会提示不存在。
==================================================================
//*******super关键字
1.基本介绍
super代表父类的引用,用于访问父类的属性,方法,构造器
2.基本语法
Ⅰ 访问属性 super.属性名
Ⅱ 访问方法 super.方法名(参数列表)
Ⅲ 访问构造器 super(参数列表)
在继承中,super和this起的作用类似,但this是会先从本类中找(访问)
而super直接从父类开始
3.super和this区别(在继承中)
________________________________________________________________
| | this | super
|_____________|___________________|________________________________
1. 访问属性 访问本类中的属性, 直接从父类开始查找
如果没有则从父类
中继续查找
————————————————————————————
2.调用方法 访问本类方法, 直接从父类开始查找
本类没有从父类
继续查找
————————————————————————————
3.调用构造器 只能在构造器中 调用父类构造器
使用this调用 必须放在子类构造器首行
构造器必须放
首行
————————————————————————————
4.特殊 表示当前对象 子类中访问父类对象
=====================================================================
//*******方法重写(方法覆盖)
1.概念定义: 在继承中,子类有一个方法和父类的某个方法【方法名、参数、返回类型相同】,
就称这个方法覆盖了父类的那个方法,(从调用方法时,会先找子类,再去找父类这个角度理解)
2.方法重写的细节
Ⅰ 子类方法的方法名、参数必须和父类相同,返回类型可以不同,但必须满足子类返回类型是父类返回类型
的子类,即父类包括子类。
Ⅱ 子类的访问修饰符不能缩小父类的访问权限。
例如父类protected,子类就不能低于protected(>=),
***************Ⅲ 重写和重载的类比
———|———————————————————————————————————————————
| 发生范围 方法名 形参列表 返回类型 修饰符
———|———————————————————————————————————————————
重载 | 本类 必须一样 类型,顺序、 无要求 无要求
| 数目至少一个不同
——————————————————————————————————————————————
重写 | 父子类(继承) 必须一样 必须一样 相同或 子类 >= 父类
父类包含子类
———————————————————————————————————————————————