史上最全讲解:JAVA中的block,package和import,权限修饰符,封装与继承,override与super.
文章目录
block
块的分类
- 块: {}是一个作用域,写在花括号之内
- 普通语句块(局部代码块): 写在类中方法之中,方法调用时被执行!
- 构造块:类中方法之外,创建对象时被执行!
- 静态块: static{};类中方法之外,类加载时就会被执行!
注意事项
- 构造块中的代码先于构造器中的代码执行,编译的时候编译器会自动把构造块中的语句编译到构造器代码之前
- 如果有多个构造块从上到下依次执行.
- 静态块中的内容在类第一次加载的时候执行,只执行一次.
- 如果有多个静态块从上到下依次执行.
- 块的执行顺序: 静态块>main>构造块>构造器
package和import
gc(garbage collection)
- 可回收的对象垃圾:
匿名对象;
对象无引用; - 程序员无权操作垃圾回收机制的执行,可以通过System.gc()通知系统
package与import
- package
为java 源文件的第一条语句,指明该文件定义的类所在的包.
不要定义与jdk相同的包名和类名! - import
不需要导包的情况:
1.同包下的内容
2.java.lang包下的内容
使用非当前包的方法:
1.使用的时候写全名,包名+类名,只在当前行有效
2.import导包
3.*模糊匹配 不会影响运行效率,影响编译效率
4.静态导入,只导入静态的内容(属性和方法)
权限修饰符
private 私有化 只能在当前类使用外部类无法使用
- 成员修饰符 属性一旦私有就要配合设置器和访问器使用 setter和getter
- 私有属性的好处:
更加安全,不允许外部直接操作
设置器和访问器是方法,可以进行逻辑判断,对输入值进行控制
private修饰的内容只能在当前类被访问
default
default关键字是默认的,省略不写,写出来会报错!default修饰的内容可以在本类中以及同包下的不同类中被访问
protected
protected修饰的内容,可以在本类中,同包下的其他类中以及不同包下的子类中被访问,但是在不同包下的子类中需要注意:只可以通过继承的方式来访问
public
public 修饰的内容可以在当前类,同包下的其他类,不同包的子类,不同包下的其他类被访问.
修饰类的修饰符只能有2个 public|default(不写 默认)
封装javabean
封装
- 定义:隐藏内部的实现细节,对外提供公共的接口
- 封装的具体体现:
类
方法
属性的私有化 - 好处(作用):
提高代码的复用性
提高代码的安全性
javabean
一系列模板类的统称
javabean四大特点
- 类被public修饰
- 至少提供一个空构造
- 属性私有化被private修饰
- 共有的访问方式
继承
- 继承: 子承父业
子类|派生类: 继承别的类的类
父类|基类|超类: 被继承的类
-
继承如何使用:
子类 extends 父类 -
继承的优点:
子类一旦继承父类,就可以使用父类中所有的内容
提高代码的复用性
子类定义扩展的内容,子类独有的内容 -
继承的特点:
java是单继承机制,但是可以多实现接口
一个类可以有多个子类,但是一个子类只能有一个父类
单继承的优点: 使用简单
单继承的缺点: 不便于后期维护
面向对象的设计原则之一: 开闭原则 ,对修改关闭,对扩展开放
重写
重写和重载之间区间:
重写还是重载都只针对方法!
- 方法的重载:
1.同一个类中的多个方法
2.方法名相同
3.参数列表不同 - 方法的重写:
1.不同的类
2.继承|实现
3.方法签名相同
如果子父类中构成方法的重写,子类对象调用时候会调用子类中重写的那个方法,对父类的方法进行屏蔽
检测方法重写的方式:
1.左侧会出现向上的三角形
2.@Override 注解强制检查重写方法(首字母大写)
== 方法签名完全相同
<= 返回值类型: 返回值类型为基本数据类型要求必须相同, 如果引用数据类型,子类<=父类
= 子类权限修饰符>=父类权限修饰符
注意:
被private修饰的方法不能被重写
被final关键字修饰的方法不能被重写
被static修饰的方法不能被重写
但是注意:如果子类中有与父类中的某个静态方法同名的时候,那这个方法也要为static修饰的
super关键字
super和this之间的区别:
- this:当前对象(new的对象|调用成员方法的对象)
1.调用本类中的其他构造器
this(参数列表)
2.区分局部和成员之间的问题 - super:指代父类对象
1.调用父类的构造器
super()
如果没有显示定义,调用父类的哪一个构造器,默认首行调用super()父类空构造
因为一般子类构造器的首行会默认调用父类空构造的问题,所以建议模板类都至少存在一个空构造
super()必须在首行调用使用才行
2.区分子父类同名问题
如果当子父类中存在同名成员的时候,子类中使用同名内容默认就近原则指代子类,如果先要使用父类的通过super使用super指代父类对象,如果不存在同名问题,调用父类中的成员,super.可以省略
先父类后子类
先静态后成员
final 关键字
被final修饰的变量为常量
被final修饰的方法不能被重写
被final修饰的类不能被继承 (太监类)