JAVA重难点问题剖析(二)

本文深入探讨了Java中的抽象类与接口的区别,解释了别名的概念,介绍了局部变量的语句块作用域,并分析了this构造和super构造的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



这次主要剖析以下问题:
抽象类与接口的区别、别名、局部变量的语句块作用域、this构造和super构造

一、抽象类与接口的区别:
* 1.抽象类中可以定义所有成员变量(含实例变量和静态变量[含常量])和非空方法,而接口中只能定义常量和空方法;
* 2.抽象类在定义抽象方法时必须加abstract,而在接口中可以加但不需要加;
* 3.接口允许多继承:一个接口可以基层多个接口,实现接口的类也可以继承多个接口,但JAVA的类仅支持单继承。

package test;

interface object1 {
// int var1;
//static int var1s;
int VAR1 = 2;// 接口中只能定义常量,等同于final static int VAR1=2;

int interfaceMethod1();
abstract int interfaceMethod2();//接口中的方法其实就是抽象方法,但在接口中一般不加abstract
// int inferfaceMethod3(){} 接口中不能含有非抽象方法
}
abstract class object2 {
int var2;
static int var2s;
final static int VAR2 = 2;//抽象类中可以定义变量也可以定义常量

abstract int abstractMethod1();
//int abstractMethod2();空方法必须加abstract修饰符
//abstract int abstractMethod3(){} 抽象方法不能指定方法体
void abstractMethod4(){}//抽象类中可以含有非抽象方法

}

二、下面中的引用变量都是别名
package test2;

public class test {
int a;

public test(int i) {
this.a = i;
}

public static void main(String[] args) {
test test1 = new test(10);
test test2 = test1;
System.out.println(test1.a);
System.out.println(test2.a);
test1 = null;
// System.out.println(test1.a);
System.out.println(test2.a);

}

}

三、局部变量的语句块作用域:
语句块{}中所声明的变量的作用域处在声明该变量的语句块中,语句块外部不能访问
public class hong {
public static void main(String[] args) {
int var1 = 1;
{
int var2 = 2;
}
System.out.println(var1);
// System.out.println(var2);
// var2不能别解析,因为var2的作用域处在语句块{}中
}
}
四、this构造和super构造
二者必须位于构造函数的第一行,this()构造用于串链同一个类中的构造函数,而super()构造用于激活超类的构造函数,如果构造函数的第一句不是this()构造或者super()构造,则会插入一条指向超类默认构造函数的super()调用


class test {
int i,j;
test(int i, int j) {
this.i = i;
this.j = j;
}
}

public class SuperDemo extends test {
int k,l;

SuperDemo() {
this(11,12);
}
/* 错误,插入插入一条指向超类默认构造函数的super()调用
SuperDemo(int i, int j) {
this.k = i;
this.l = j;
}
*/
public static void main(String[] args) {
SuperDemo sd = new SuperDemo();
System.out.print(sd.i+""+ sd.j+sd.k+sd.l);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值