一、概念&特点
1、概念
1)是一种类与类之间的关系;
2)使用已存在的类的定义作为基础建立新类;
3)父类(基类),子类(派生类);
4)子类的定义可以增加新的属性和新的方法,也可以用父类所有开放的属性和方法,但不能选择性地继承父类(不能只继承一部分)。
2、继承特点
1)利于代码复用。
2)缩短开发周期。
3、 继承的关系
满足A is a B的关系就可以能形成继承关系。
猫、狗→动物
老师、学生→人
轿车、卡车→车
二、继承的实现
//公共的属性和方法(父类) public class Animal { } //编写子类,继承父类 public class Dog extends Animal { //关键字extends //子类特有的属性和方法 //只能继承一个父类 } //子类 public class Cat extends Animal{ }
三、方法重写
1、方法重载
1)在同一个类中;
2)方法名相同,参数列表不同(参数顺序、个数、类型);
3)方法返回值、访问修饰符任意。
2、方法重写
1)有继承关系的子类中;
2)方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同;
3)访问修饰符,访问范围需要大于等于父类的访问范围。
4)与方法的参数名无关。
3、注意
1)Java中重写仅限于方法,属性不可以重写。但是在子类中,是可以定义与父类重名的属性的,此时子类对象调用的是子类的属性。
2)静态方法和最终方法不能被重写;但静态方法在子类中可以通过隐藏父类方法的方式重新实现。
public static void bark(){} //静态方法
public final void display(){} //最终方法
四、编程练习:测试和研发
要求如下:
编程练习:请使用面向对象的思想,设计自定义类完成如下功能要求: 接收用户输入的信息,选择需要完成的工作任务。其中,可供选择的有:测试工作和研发工作。关于类型设定描述如下: 测试工作 属性:工作名称、编写的测试用例个数、发现的Bug数量 方法:工作描述 研发工作 属性:工作名称、有效编码行数、目前没有解决的Bug个数 方法:工作描述 程序运行参考效果图如下: 父类信息测试:开心工作 测试工作类信息测试:测试工作的日报是:今天编写了10个测试用例,发现了5个bug 研发工作类信息测试:研发工作的日报是:今天编写了1000行代码,目前仍有10个bug没有解决 任务 思路分析: 第一步:分析测试工作和研发工作的共性: 都是工作类型 都有工作名称的属性,工作描述的方法 第二步:根据共性,定义工作类 属性:工作名称 方法: 编写无参构造方法、带参构造方法完成对属性的赋值 编写工作描述的方法,描述内容为:开心工作。 第三步:定义测试工作类、研发工作类分别继承工作类,要求: 测试工作类: 增加属性:编写的测试用例个数、发现的Bug数量 在构造方法中调用父类相关赋值方法,完成属性赋值 重写运行方法,描述内容为:**的日报是:今天编写了**个测试用例,发现了**bug。其中**的数据由属性提供 研发工作类: 增加属性:有效编码行数、目前没有解决的Bug个数 在构造方法中调用父类相关赋值方法,完成属性赋值 重写运行方法,描述内容为:**的日报是:今天编写了**行代码,目前仍然有**个bug没有解决。其中**的数据由属性提供