Java浅学-包,封装,继承,super

        三大作用

1.区分相同名字的类

2.当类很多时,可以很好的管理类

3.控制访问范围

        基本语法

package com.hspedu;

说明

        1.package 关键字,表示打包

        2.com.hspedu 表示包名

包的本质

        实际上就是创建不同的文件夹/目录来保存类文件。

包的命名

        只能包含数字,字母,下划线,小圆点,但不能用数字开头,不能是关键字或保留字。

        一般是小写字母+小圆点,例如:

com.公司名.项目名.业务模块名

com.hspedu.oa.mode;

常用的包

        一个包下,包含很多的类,Java中常用的包有:

java.lang.*                lang包是基本包,默认引入,不需要再引入。

java.util.*                   util包是系统提供的工具包,工具类。

java.net.*                  网络包,网络开发。

java.awt.*                  是做java的界面开发,GUI     

访问修饰符

Java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围):

1.公开级别:用public修饰,对外公开。

2.受保护级别:用protected修饰,对子类和同一个包中的类公开。

3.默认级别:没有修饰符号,向同一个包的类公开。

4.私有级别:用private修饰,只有类本身可以访问,不对外公开。

注意事项

        1.修饰符可以用来修饰类中的属性,成员方法以及类。

        2.只有默认的和public才能修饰类,并且遵循上述访问权限的特点。

        3.成员方法的访问规则和属性完全一样。

封装

        封装就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作[方法],才能对数据进行操作。

封装的好处

        1.隐藏实现细节。

        2.可以对数据进行验证,保证安全合理。

封装的实现步骤

        1.将属性进行私有化(不能直接修改属性)。

        2.提供一个公共的set方法,用于对属性判断并赋值。

        public void setXxx(类型 参数名){

                //加入数据验证的业务逻辑

                属性 = 参数名

}

        3.提供一个公共的get方法,用于获取属性的值

        public XX getXxx() {//权限判断

                return xx;

}

继承

        两个类的属性和方法有很多是相同的,继承就可以很好解决这个问题(代码复用性)。

细节

        1.子类继承了所有的属性和方法,但是私有属性和方法不能再子类直接访问(可以间接访问),要通过父类提供的公共的方法去访问。

        2.子类必须调用父类的构造器,完成父类的初始化。

        3.当创建子类对象时,不管使用子类的那个构造器,默认情况下总会调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的无参构造器中,用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。

        4.如果希望指定去调用父类的某个构造器,则显示的调用一下,:super(参数列表)。

        5.super在使用时,必须放在构造器第一行(super只能在构造器中使用)。

        6.super()和this()只能放在构造器第一行,因此这两个方法=-不能共存在一个构造器。

        7.Java所有类都是object类 的子类,object是所有类的基类。

        8.父类构造器的调用不限于直接父类,将一直往上追溯直到object类。

        9.子类最多继承一个父类(指直接继承),即Java中是单继承机制。

思考:如何让A类继承B类和C类呢?(让A继承B,B继承C)。

 super介绍

        super代表父类的引用,用于访问父类的属性,方法,构造器。

1.访问父类的属性,但不能访问父类的private属性。

2.访问父类的方法,但不能访问父类的private方法。

3,访问父类的构造器。

好处:

        1.调用父类构造器的好处,分工明确,父类属性由父类初始化,子类属性由子类初始化。

        2.当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super,this,直接访问是一样的效果!

this.cal( );        //等价 cal。

super.cal( );        //找cal方法的顺序是直接查找父类。

        super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类(上级类)中都有同名的成员,使用super访问遵循就近原则。A->B->C 当然也需要遵守访问权限的相关规则。

super和this比较            

方法重写介绍

        方法重写就是子类有一个方法,和父类的某个方法的名称,返回类型,参数一样,那么我们就说子类的这个方法覆盖了父类的方法。

        1.子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一样。

        2.子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的字类,比如:父类 返回类型是 object,子类方法返回类型是string。

        3.子类方法不能缩小父类方法的访问权限,允许扩大。

Ending: 

        OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值