1、继承
(1)在Java中,类的继承是指在一个类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类可继承的属性和方法;
子类中可以直接调用父类的成员;
继承的格式&使用
使用extends关键字
格式:
class 子类 extends父类{ }
1 /* 2 * 父类 3 * 定义员工类 4 */ 5 public class Employee { 6 String name;// 姓名 7 8 public void work() { 9 System.out.println("员工在工作"); 10 } 11 }
1 /* 2 * 定义研发部员工类。继承员工类 3 * 关键字extends 4 * 子类是Develop,父类是Employee 5 * 6 */ 7 public class Develop extends Employee { 8 public void print() { 9 System.out.println(name); 10 } 11 }
1 /* 2 * 测试类 3 */ 4 public class Test { 5 public static void main(String[] args) { 6 // 创建研发员工类的对象 7 Develop d = new Develop(); 8 // 子类的对象,调用父类中的成员 9 d.name = "张三"; 10 d.print(); 11 d.work(); 12 } 13 }
运行结果:
(2)继承的好处和注意事项
1、继承的出现提高了代码的复用性,提高了软件开发效率;
2、继承的出现让类和类之间产生了关系,提高了多态的前提。
3、一个类只能有一个父类,不能有多个父类,只允许单继承,不允许多继承;
4、Java支持多层继承,如:类B继承类A,类C继承类B,类C同时拥有类A和类B的属性和功能;
5、在Java中,子类和父类是一种相对的概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。
6、事物抽取,每个具体事物的共性抽取;子类的共性抽取,形成父类;
7、继承体系:父类,内容最共性;子类,不但拥有共性,还拥有自己的特性
(3)继承后,子类父类中,成员变量的特点
子类对象调用成员变量(就近原则)
1、子类自己有,使用自己的;子类没有,调用父类的;
2、在子类中,调用父类的成员,使用关键字super.调用父类的成员;
3、子类(派生类)继承父类(超类、基类)
4、this. 调用子类成员;
5、super.调用父类成员;
(4)继承后,子类父类中,成员方法的特点
1、子类自己有,使用自己的;子类没有,调用父类的;
2、方法的重写(Override)
子类中出现了和父类一模一样的方法的时候,子类重写父类的方法,覆盖。
3、当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法。
(5)方法重写的注意事项
1、子类方法覆盖父类方法,必须要保证子类方法的权限大于或者等于父类权限;
2、四大权限:public protected default(默认,不能写) private
3、写法上需要注意:
必须一模一样:方法的返回值类型、方法名、参数列表都要一样。
2、抽象类
(1)抽象类的定义
方法声明相同,但方法功能主体不同,只抽取方法声明,不抽取方法主体,那么这个方法就是一个抽象方法;
抽象方法:没有主体的方法,必须使用关键字abstract修饰;
当定义了抽象方法的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。
(2)抽象类的使用方式
抽象类不能实例化对象,不能new的;
不能创建对象的原因:抽象方法没有主体,根本不能运行;
抽象类的使用方式:定义类继承抽象类,将抽象方法进行重写,创建子类的对象