1.类定义
1.1类声明
class 类名 {
//类体
}
1.2抽象类
抽象类支持直接被继承,如果子类未实现父抽象类的所有抽象方法,则子类也必须为抽象类,如果子类实现了父抽象类的所有抽象方法,则子类为具体类。
抽象类不支持直接被实例化。
抽象类非必须包含抽象方法,但包含抽象方法的类必须为抽象类。
abstract class A {
abstract 返回类型 方法名(类型 形参名);
}
class B extends A {
@Override
返回类型 方法名(类型 形参名) {
//方法体
}
}
2.成员定义
注意:Java 语言不支持静态访问器属性、实例访问器属性。
class 类名 {
//静态字段
static int a = 1;
//静态方法
static void f1() {
}
//静态初始化块
static {
}
//实例字段
int b = 1;
//实例方法
void f2() {
}
//实例初始化块
{
}
//构造方法
类名(int b) {
this.b = b;
}
}
3.继承
3.1方法继承
一个子类只可以直接继承自一个父类,不可以直接继承自多个父类。
子类会直接继承父类中可继承的方法,间接继承祖父类中可继承的方法,以此类推,直至没有可继承的方法。
注意:从父类中继承过来的方法无需在子类中重新声明,否则会发生覆盖。
class 子类名 extends 父类名 {
//子类体
}
3.2方法覆盖(Override)
如果从父类中继承过来的方法在子类中重新声明,则在子类中重新声明的方法会覆盖从父类中继承过来的方法。
方法签名包含:访问修饰符、返回类型、方法名、形参类型、形参类型的个数、形参类型的顺序。
注意:@Override
注解只支持实例方法,不支持静态方法。
注意:覆盖并不会影响父类中原来的方法。
public class C {
public static void main(String[] args) {
B b = new B();
System.out.println(b.f()); // 2
}
}
class B extends A {
@Override
int f() {
return 2;
}
}
class A {
int f() {
return 1;
}
}
3.3super关键字
super
关键字用于在子类中调用父类的方法。
//调用父类的方法
super.静态方法名()
super.实例方法名()
//调用父类的构造方法
//不传递参数(注意:圆括号不可以省略)
super()
//传递指定参数
super(参数)
4.创建对象
4.1创建对象
//无实参
类名 对象名 = new 类名();
//有实参
类名 对象名 = new 类名(实参);
4.2方法重载(Overload)
方法签名包含:方法名、形参类型、形参类型的个数、形参类型的顺序,不包含:访问修饰符、返回类型。
4.3this关键字
this
关键字指向当前对象。
5.访问成员
//外部调用
类名.静态字段名
类名.静态方法名()
对象名.实例字段名
对象名.实例方法名()
//内部调用
//类上下文
[类名.]静态字段名
[类名.]静态方法名()
//实例上下文
this.实例字段名
this.实例方法名()
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javalang/37628.html