第七天继承之继承
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七天继承之继承相关的知识,希望对你有一定的参考价值。
继承的概述
继承的概念
继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
在java中,类的继承是指在一个新的类的基础上去构建一个新的类.
如果类B从类A中派生,或者说类B扩展自类A 或者说 类B继承于类A
称类A为"父类"也叫超类或基类
称类B为"子类"也叫次类,扩展类,派生类
继承关系的子类特点
子类会自动拥有父类所有的非私有的属性和方法,同时也可以添加新的属性和方法,但是不可以删除父类的方法
子类可以用自己的方式实现父类的方法
java的继承是单继承但可以多重继承,单继承就是一个子类只能继承一个子类,多重继承是 a继承b b继承c 按关系来说c是b的父类,也是a的父类,同时b也是a的父类
提高了类之间的耦合性(继承的缺点,加强了类之间的联系)
继承的定义格式和使用
继承的格式
class 子类名 entends 父类{}
案例雇员(Employee)与研发部员工(Developer)
Employee.java: /* * 定义员工类Employee */ class Employee { String name; // 定义name属性 public void work() {// 定义员工的工作方法 System.out.println("尽心尽力地工作"); } } Developer.java: /* * 定义研发部员工类Developer 继承 员工类Employee * 继承了父类中所有非private修饰的成员变量 */ class Developer extends Employee { // 定义一个打印name的方法 public void printName() { System.out.println("name=" + name); } } 测试员工类与研发部员工类: /* * 定义测试类 */ public class Example01 { public static void main(String[] args) { Developer d = new Developer(); // 创建一个研发部员工类对象 d.name = "小明"; // 为该员工类的name属性进行赋值 d.printName(); // 调用该员工的printName()方法 d.work(); // 调用Developer类继承来的work()方法 } }
通过子类对象既可以调用自身的非private修饰的成员,也可以调用父类的非private修饰的成员
继承的好处
1提高了代码的复用性,提高了软件的开发效率
2让类与类之间产生了关系,通过了多态的前提
继承的缺点
1打破了封装,基类向子类暴露了实现的细节,子类可以访问基类的属性和方法
2削弱了子类的独立性,当父类改变时,子类也不得不改变
继承层次
继承并不只限于一个层次.有一个公共超类派生出来的所有类被称为继承层次
继承链:从某个特定的类到器祖先的路径被称为该类的继承链,通常一个祖先可以拥有多个子孙继承链
继承的注意事项
1在java中类只支持单继承不允许多继承,也就是说下面是不合法的.
class A{} class B{} class C extends A,B{} // C类不可以同时继承A类和B类
如果支持会发生声明呢
class A{ int a=3; public void method(){ } } class B{ int a=5; public void method(){ } } class C extends A,B{ } class Demo{ public static void main(String[] args){ C c=new C(); System.out.println(c.a);//到底是调用A的还是B的成员变量??无法确定 c.method();//到底是调用A的还是B的成员方法??无法确定 } }
2多个类可以继承一个父类,下面的情况就是允许的
class A{} class B extends A{} class C extends A{} // 类B和类C都可以继承类A
3多层继承是可以的即一个类的父类可以再去继承另外的父类,
class A{} class B extends A{} // 类B继承类A,类B是类A的子类 class C extends B{} // 类C继承类B,类C是类B的子类,同时也是类A的子类
4父类和子类是一种相对的概念 一个类是某个类父类的同时,也可以是另一个类的子类。
5继承是为"是一个"的关系建模的,父类和其子类间必须存在"是一个"的关系,否则不能用继承。
但也并不是所有"是一个"的关系都应该用继承。例如,正方形是一个矩形,但不能让 Square 类来继承 Rectangle 类,因为正方形不能从矩形扩展得到任何东西。正 确的继承关系是 Square 类继承 Shape 类
继承的体系
动物(吃)
|
-------------------------
| |
猫科动物(吃,胎生) 爬行动物(吃,卵生)
| |
------------------------------- -------------------------
| | | |
猫(吃,抓老鼠,胎生) 虎(吃,领地,胎生) 蛇(吃,冬眠,卵生) 鳄鱼(吃,潜水,卵生)
动物是对每个具体事物共性的抽取,子类的共性抽取为父类
父类:具有子类的共同特性
子类不仅有共同特性还有自身独有的内容
整个继承越往上越抽象,越往下越具体
继承后子类父类成员变量的特点
1子类调用成员变量是,子类自己有就用字的,没有就用父类的
2出现同名变量时,遵循就近查找原则,用子类自己的
以上是关于第七天继承之继承的主要内容,如果未能解决你的问题,请参考以下文章