1.类的继承(关键字extends),即A类继承B类,B类称为父类、超类或基类,A类称为子类、衍生类或导出类。

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的属性或者方法,也可以用已存在的属性或者方法,这种技术能够非常容易地复用以前的代码,大大缩短开发周期,降低开发费用。

继承语法格式如下:

class 子类类名 extends 父类类名{
类定义部分;
}

注意:构造方法继承含有super();其意义是继承父类的意思,

super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参);

2.继承和访问权限

(1).子类可以继承父类中访问权限修饰符为public和protected的方法和属性;

(2).子类可以继承父类中用默认访问权限修饰的属性和方法,但前提是子类必须和父类在同一个包下;

(3).子类无法继承访问权限修饰符为private的属性和方法;

(4).子类无法继承父类的构造方法。

继承案例:

父类:

package test_method;
class Creature{
public Creature(){
System.out.println("Creater无参数的构造器");
}
public void test(){
System.out.println("Creature中的test()方法");
}
}


子类:

class Animal extends Creature{
public String name;
public int age;
public static int num;
public String booksname="数据结构";
public Animal(){
System.out.println("bbbbbb");
}
public Animal(String name){
test();
super.test();
System.out.println("Animal带一个参数的构造器,"+"该动物的name为"+name);
}
public Animal (String name,int age){
this(name);
num++;
System.out.println("Animal带两个参数的构造器,"+"其age为"+age);
}
public void test(){
System.out.println("Animal中的test()方法");
}
}

代码结果

Creater无参构造器

Animal中的test()方法

Creature中的test()方法

Animal带一个参数的构造器,该动物的name为灰太狼

Animal带两个参数构造器,其age为3

wolf无参数的构造器

2.多态

语法格式如下:

向上转型:父类引用指向子类对象,

父类名()  对象名=new 子类名();注意:子类必须继承这个父类,父类可能也继承了其他类,父类名()也可以替换成父类继承的基类的类名()。

好处:不用针对父类的多个子类重写方法,减少代码量,提高效率,但是不安全。

这样子类对象就有多重身份,但存在风险,因为子类可以调用父类的方法和属性等,但是父类调用不了子类独有的成员变量。

所以存在找不到数据等风险。

向下转型:语法:

子类类名() 对象名=new 子类类名();