1.什么是继承

继承是基于已经创建的类的基础上,新建一个类,让新建的类和已有的类产生子父类的关系,已有的类叫父类,新建的类叫子类。子类能够调用父类中的非私有的属性和方法。

2.怎么实现继承

继承是在创建的子类类名后加extends关键字,然后加上父类类名,格式为:
public class 子类类名 extends 父类类名 { 类体}
例如创建一个动物类,代码如下

class Animals {
private String name; //动物名
private String color; //动物颜色

public Animals() {
}
public Animals(String name, String color) {
	this.name = name;
	this.color = color;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getColor() {
	return color;
}
public void setColor(String color) {
	this.color = color;
}

再创建一个狗类继承动物类:

class Dog extends Animals {
	
}

这样狗这个类就实现了对动物这个类的继承。

3.怎么使用继承

实例化子类对象后,就可以通过子类直接调用父类中非私有属性及方法:
如上面代码中,我们在主方法中实例化一个狗的对象:

public class ExtendsTest {
	public static void main(String[] args) {
		Dogs dg = new Dogs();
		dg.setName("哈士奇");
		dg.setColor("black");
		System.out.println(dg.getName());
		System.out.println(dg.getColor());
	}
}

结果为:

java 标注继承 java继承类怎么创建_Java


子类继承了父类,实例化子类时,可以直接调用父类中的非私有方法如上文中的get,set方法.

4.继承中的构造方法注意问题

在实例化子类对象时,会自动调用父类中的无参构造方法,如果父类中没有无参构造方法,则需要手动调用父类中已有的构造方法。如将上面动物类中的无参构造方法去除。

class Animals {
private String name;
private String color;
public Animals(String name, String color) {
	this.name = name;
	this.color = color;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getColor() {
	return color;
}
public void setColor(String color) {
	this.color = color;
}
}

这时编译就会报错

java 标注继承 java继承类怎么创建_Java_02


这是因为父类中没有无参构造方法,而实例化子类对象时会系统会自动调用父类的无参构造方法。那么这是就引出一个新的关键字super;super关键字的作用主要是再子类中指向父类对象,访问父类属性,父类方法以及父类的构造方法,如上面代码,无参构造器删除以后,再实例化子类对象时就应该手动调用父类中的有参构造器,子类代码更改如下:

class Dogs extends Animals {
	public Dogs(String name,String color) {
		super(name,color);
	}
}

在子类构造器中添加对父类的有参构造器的调用就可以解决问题。

5.this关键字和super关键字的区别

this指向的时当前类所创造的对象,而super指向的是父类对象。

6.方法重写

方法重写是指子类中方法和父类中的方法方法名一样,参数列表一样,返回值一样,称为方法的重写。
注意事项:子类中重写的方法的权限要比父类中大或者一致,如子类中方法被private修饰,父类被public修饰,编译就会报错。
抛出的异常子类只能比父类小。