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