当前位置: java社区 > 03-略知一二 > 阅读正文

java面向对象之继承

2021.8.24.   317 次   1283字

继承,可以对共性抽取,实现代码重用,完成代码简化

简单来说,子类继承父类,那么子类继承了父类的属性和方法。

我们可以从多个角度理解java中的继承

类与对象角度

一个父类,可以有多个子类

而一个子类可以有多级父类,只能有一个直接父类,父类也叫基类,超类,子类也叫派生类

所有对象均继承自 Object 类,即 java.lang.Object

1.子类声明中使用 extends 关键字

子类声明语法: 子类名 extends 父类名

class A{  //父类
	public A(int a){
		System.out.println("A的构造方法");
	}
	String name = "A";
	String age = "age";
	public void say() {
		System.out.println("I am A class");
	}
	public void call() {
		System.out.println("A call");
	}
}
class B extends A{ //子类
	public B() {
		super(10);
		System.out.println("B的构造方法");
	}
	String name = "B";
	public void haha() {
		System.out.println("haha");
	}
	@Override
	public void call() {
		System.out.println("B call");
	}
}
2.子类可以当作父类使用
A a = new B();

不但在对象创建上,它也体现在方法的传参,返回值上,可以传递或返回子类对象。

这里实际是多态的一种思想,不过多赘述,请参考多态。

成员变量角度

子类继承父类的成员变量

1.成员同名变量使用规则:优先使用本类,没有则向上找
B b = new B();
System.out.println(b.name);  //B
System.out.println(b.age);   //age
2.子类中,局部变量,成员变量,与父类成员变量的调用
局部变量名:变量名;
成员变量名:this.成员变量名;
父类成员变量名:super.成员变量名;

成员方法角度

子类继承父类的成员方法

1.成员变量同名规则:优先使用本类,没有则向上找
B b = new B();
b.haha();  //haha
b.call();  //A call
2.子类中,成员方法,与父类成员方法的调用
成员方法:方法名
父类成员方法:super.成员方法名;
3.子类同名成员方法(方法覆盖重写),使用 Override 注解检测

该注解,仅起到检测作用,不写该注解,子类代码正常时也能运行

在重写时,权限修饰符要么相同,要么更宽松,声明抛出的异常要么相同,要么更小。

@Override
public void call() {
	System.out.println("B call");
}

构造方法角度

1.子类创建时,必须先调用父类的构造方法,再调用子类构造

2.子类的构造方法不写时,默认赠送 super();

3.如果父类没有无参构造,无法赠送 super();

4.第3种情况下,子类构造的第一行语句,必须写 super(参数);

(该语句只能在子类构造中的第一句调用,其他地方均无法调用,且不能与this同时使用)

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群