1.代码块
- 概述:在java中,使用{}括起来的代码被称为代码块
- 分类:根据其位置和声明的不同
- 局部代码块
- 构造代码块
- 静态代码块
- 同步代码块
- 应用:
- 局部代码块 :在方法中出现(提高内存利用率)
- 构造代码块(初始化块):在类中方法外出现,多个构造方法中相同的代码存放在一起,每次调用都执行,是在方法前执行
- 静态代码块:在类中方法外出现,用static修饰,用来初始化类,只执行一次。
- eg:
public class Test {
{
System.out.println("我是代码块");
}
public static void main(String[] args) {
{
System.out.println("我是局部代码块");
}
Test t=new Test();
}
static {
System.out.println("我是静态代码块");
}
}
输出结果:
我是静态代码块
我是局部代码块
我是代码块
2. 继承
- 含义:让类与类之间产生子父类关系
- 优劣:
- 好处: (1)提高了代码的复用性
(2)提高了代码的维护性
(3)让类与类产生关系 - 坏处:类的耦合性增强了
耦合性:类与类之间的关系
内聚性:自己独立完成某件事的能力
开发原则:高内聚,低耦合
- 好处: (1)提高了代码的复用性
- 特点:
-
只支持单继承,不支持多继承
-
子类只能继承父类非私有的成员(成员方法和变量)
-
子类不能继承父类的构造方法,但能用super调用
注:继承中子父类成员调用顺序 : 1. 加载父类静态变量和静态代码块 2.加载子类静态变量和静态代码块 3.加载父类的成员变量成员代码块 4.加载父类的方法 5.加载子类的成员变量成员代码块 6.加载子类的方法
-
3. this和super的区别和应用
- 特点:
- this:代表当前对象的引用
- super:代表父类方法的引用
- 使用区别:
- 调用成员变量:
- this.成员变量 可以调用本类的成员变量,以及父类的成员变量 ,主要用来调用本类的
- super.成员变量,用于调用父类的
- 调用构造方法
- this(…)调用本类的
- super(…)调用父类的
- 调用成员方法
- this.成员方法 调用子类的,也可调用父类的
- super.成员方法 调用父类的
- 调用成员变量:
4.构造方法
- 特点:子类中所有的构造方法默认会访问父类的空参数构造方法
- 注意:super(…)this(…)必须出现在构造方法的第一句
- eg:
public static void main(String[] args) {
Y y = new Y();
}
}
class X {
int a,b;
static Z z=new Z();
static {
System.out.println("X的静态代码块");
}
public X() {
System.out.println("X的无参构造器");
}
public X(int a){
System.out.println("X的一参构造器");
}
public X(int a,int b){
this(9);
System.out.println("X的两参构造器");
}
}
class Y extends X{
static {
System.out.println("Y的静态代码块");
}
public Y() {
super(3,5);
System.out.println("Y的无参构造器");
}
}
class Z{
public Z() {
System.out.println("Z的无参构造器");
}
输出结果:
Z的无参构造器
X的静态代码块
Y的静态代码块
x的无参构造器
X的一参构造器
X的两参构造器
Y的无参构造器
5.继承中的方法重写
- 含义:子父类出现一样的方法
- 应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,重写父类方法
- 特点:
- 父类私有方法不能被重写
- 访问权限一致
- 父类为静态方法,子类也必须为静态
- 子类和父类声明一样