一、访问控制符
访问控制符属于修饰符的一种,主要用于确定其他类是否可以使用某个类或者某个类的字段及调用某 个类的特定方法。主要用于避免类或者方法的滥用。
1、 访问控制符如下:
public 公共的 ------->当前项目中的任意类中
protected 被保护的 ------->本类中、本包路径下的其他类、其他包路径下的子类
default 默认的(注意:不能写出来) ------->本类中、本包路径下的其他类
private 私有的 ------->本类中
2、访问控制符可以出现的场合:
类、接口、抽象类:public、包访问权限
普通方法(类): public、protected、包访问权限、private
接口方法(接口): public、包访问权限
抽象方法(抽象类):public、包访问权限、protected
构造方法:public、protected、包访问权限、private
成员变量(类):public、protected、包访问权限、private
成员变量(接口):public static final
二、封装性
1、面向对象语言的三大特征:
1.封装:通过合并特征和行为来创建新的数据类型。通过私有化隐藏实现细节。
2.继承:通过扩展已有类,生成一种新的类型。
3.多态:每个对象表现的多样性。
2、封装的概念
访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共 同被称作是封装。其结果是一个同时带有特征和行为的数据类型。
成员变量的隐藏
使用private访问权限实现成员变量的私有化,private修饰的成员变量就是私有成员变量,只能在类 内部直接访问,类外不能直接访问
get和set方法: get方法表示访问私有属性的方法:
set方法表示修改私有属性的值的方法:
方法的隐藏
使用private访问权限实现内部方法的私有化,从而避免内部实现被其他程序员乱用。
三、继承性
1、继承的概念
在原有类的基础上扩展形成一个新类,原有类的成员在新类中都存在,这种机制称为继承。
继承:通过扩展已有类,生成一种新的类型
实现代码的重用和扩展
实现多态的基础
extends:明确表示当前类继承某个类,只能继承一个类,Java不支持多重继承;如果没有 extends,则默认继承自Object类
被继承的类:父类,超类,基类
继承的类:子类,派生类
向上转型,子类对象实例化(子类对象赋值给父类对象),自动类型转换
向下转型,先由子类实例化父类对象,然后再将父类对象赋值给子类,此时需要强制转换
2、super关键字
super:表示当前类对象的父类对象
-
通过super关键字可以关联到父类对象的可访问属性和方法
-
访问父类对象属性:super.属性名称
-
访问父类对象方法:super.方法名称
注意:
-
1、创建子类对象时,将优先加载父类的信息(创建子类对象时,先创建父类对象)
-
2、创建子类对象时,如果没有指定要调用的父类构造函数,则默认调用父类的无参构造函数,如果有指定要要调用的父类构造函数,则默认调用父类的无参构造函数将不可再调用
-
3、子类调用父类构造函数时,需要在子类的构造函数得第一行进行调用,其余方式参考this关键字。
3、方法重写(覆写、复写)
1、方法重载(overload)
1. 同一个类中,方法名相同,参数列表不同(个数不同,类型不同,顺序不同) 2. 与返回值,访问修饰符等无关。
子类中重新实现继承过来的某个方法,静态方法不存在重写与否。
覆写(复写):在继承关系下,子类由与父类相同的方法,则称子类覆写父类方法。 注意:此句中的相同指: 修饰符:子类方法范围大于等于父类方法范围 返回值:子类方法返回值与父类相同或为父类方法返回值类型的子类 方法名称:相同 参数列表:相同,如果不相同,则与父类方法形成重载
4、final关键字
final关键字表示最终的,最后的
-
修饰:
属性/变量:被称为常量,值不可被改变,注意:创建时需要初始化(赋值)
方法:子类不能重写该方法
类:该类不能被继承
四、关键知识点默写
1、 方法传参 返回值
1.方法传参采用传值 : 基本类型传递的数据本身,引用类型传递的是地址
2.返回值:基本类型返回数据本身,引用类型返回地址。
2、包
为类提供命名空间,分类组织相关类和接口,提供包级别的访问控制
3、访问控制符
避免混乱调用:public、protected、包访问权限、private
4、封装
隐藏类的实现细节。
5、继承
通过扩展已有类,生成一种新的类型
子类 extends 父类{
}
默认继承自Object
只能继承一个类,不存在多重继
6、子类对象初始化
先父后子、先静态后非静态、同级别静态初始化看位置
7、 supe
在子类中指定使用父类属性、方法、构造方法
super.属性
super.方法
super();
8、方法重写
重新实现父类中的普通方法,其他父类成员不存在重写。
方法重写规则:
1. 重写方法时,方法签名(方法名和参数列表)必须和父类一样
2.访问控制符必须一样或者扩大
3.其他修饰符必须和父类一样
4.返回值必须和父类一样,如果是引用类型,则可以是父类方法返回值的子类
5.异常声明可以是父类异常声明的子类或者不写
注意:如果方法名和父类相同,参数不同,则子父类方法形成重载。
五、常见面试题
方法重载与方法重写的区别?
1.重载发生在本类中,而重写发生在父子类继承关系中。
2.重载只关心方法的参数列表不相同,其他条件不关心。
3.重写要求方法名称、参数必须相同,返回值相同或者是其子类类型,且重写的方法访问修饰符约束更宽松。
4.构造方法可以发生重载,但不会发生重写。