封装、继承、super、方法重写

//***********************封装
                                    封装步骤
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(>=),
***************Ⅲ   重写和重载的类比
———|———————————————————————————————————————————
            |        发生范围                   方法名                        形参列表                   返回类型                       修饰符
———|———————————————————————————————————————————
重载     |        本类                         必须一样                   类型,顺序、               无要求                      无要求
            |                                                                   数目至少一个不同
——————————————————————————————————————————————
重写    |    父子类(继承)             必须一样                 必须一样                        相同或                    子类 >= 父类
                                               父类包含子类         
———————————————————————————————————————————————

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值