继承的概述
*A:继承的概念
*a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
*b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,
构建出来的新类被称作子类,现有类被称作父类
*B:继承关系的子类特点
*a:子类会自动拥有父类所有非private修饰的属性和方法
继承的体系:
动物(吃)
|
------------------------------------------------------
| |
猫科动物(吃,胎生) 爬行动物(吃,卵生)
| |
------------------------------ -------------------------
| | | |
猫(吃,抓老鼠,胎生) 虎(吃,领地,胎生) 蛇(吃,冬眠,卵生) 鳄鱼(吃,潜水,卵生)
*a:动物体系是对每个具体事物共性的抽取,子类的共性抽取形成父类
*b:父类:具有所有子类的共性内容
子类:不但有共性还有自身特有的内容
*c:整个继承体系,越向上越抽象,越向下越具体
继承的定义格式和使用
*A:继承的格式
class 子类 extends 父类 {}
*B:继承的使用
通过子类对象既可以调用自身的非private修饰的成员,也可以调用父类的非private修饰的成员
继承的好处
*A:继承的好处:
*1、继承的出现提高了代码的复用性,提高软件开发效率。
*2、继承的出现让类与类之间产生了关系,提供了多态的前提。
继承的注意事项
*A:继承的注意事项
在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类(儿子只能有个一个爹),但是一个父类可以被很多个子类继承(一个爹可以有很多个儿子)。同时允许多层继承(儿子类继承爸爸类,爸爸类继承爷爷类)。
举例:
class A{}
class B{}
class C extends A,B{} // 错误! C类不可以同时继承A类和B类
class A{}
class B extends A{}
class C extends A{} // 正确!类B和类C都可以继承类A
class A{}
class B extends A{} // 正确!类B继承类A,类B是类A的子类
class C extends B{} // 正确!类C继承类B,类C是类B的子类,同时也是类A的子类
在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类。
继承后子类父类成员变量的特点
*A:子类的对象调用成员变量的时候,子类自己有,使用子类,子类自己没有调用的父类
*B:当子父类中出现了同名成员变量,直接访问子类方法时遵循就近查找原则;在子类中需要访问父类中非私有成员变量时,需要使用super关键字,访问子类本身非私有成员变量使用this关键字。
class Fu{
//Fu中的成员变量。
int num = 5;
}
class Zi extends Fu{
//Zi中的成员变量
int num = 6;
void show(){
//子类的局部变量
int num=7;
//直接访问,遵循就近查找原则
System.out.println(num); //7
//子父类中出现了同名的成员变量时
//在子类中需要访问父类中非私有成员变量时,需要使用super关键字
//访问父类中的num
System.out.println("Fu num="+super.num); //5
//访问子类中的num2
System.out.println("Zi num2="+this.num); //6
}
}