一、类与类之间的关系
面向对象的进阶
- 类和类之间的关系
横向关系:
1、依赖关系:某一对象在执行指定方法时,需要其他的对象参与完成 人喝水需要使用杯子
2、关联关系 1 - 1 1 - n n - n
它体现的是两个类,或者类与接口之间的一种语义级别的强依赖关系。
这种关系比依赖关系更强,关系不是临时性的是长期的
表现在代码层面两个相关联的类之间,A类作为B类的关联类或者属性类,A类可以调用
B类找那个的所有的属性和方法
//组合关系和聚合关系只是在思想上和前面两种方式有所区别,在代码体现上都一样
3、组合关系 包含关系 可以分离的 计算机 - cpu 多个员工 ---> 公司
产生一个订单:商品信息 客户信息 订单信息
4、聚合关系 强包含关系 不可分离的 人 - 大脑
纵向关系:
1、继承关系 (父类和子类之间的关系)
子类继承父类
2、实现关系(接口和实现类)
实现类实现接口
接口:身份
二、继承
继承关系:
在现实生活中,继承一般指子女继承父辈的财产。在程序中,继承一般描述事物之间的所属关系。
通过继承可以实现多种事物之间的关系体系.
举个栗子:
一个公司有很多的开发人员和维护人员,都属于员工。
程序中父类就可以是员工类,子类可以是:java程序员,c++程序员,android程序员,
都具有一些相同的特征,但是又有自己独立的功能。
把相同的东西写在父类中进行调用,避免了很多的重复代码
把自己特有的属性或者方法写在本类中
在Java中,类的继承指在一个现有的类的基础上去构建新的类,构建出来的新的类叫子类,子类会自动拥有父类可以
被继承的属性和方法。
凡是没有使用private进行修饰的元素,都可以被继承
子类和父类之间的关系
单继承:一个子类只能有一个父类,但是一个父类可以有多个子类
高内聚,低耦合
耦合:类与类之间,对象之间,模块之间的联系
继承的特点:
1、子类继承于父类,可以获取到父类中所有非私有的属性和方法
2、如果子类有自己独有的方法,那么可以直接创建子类对象来进行调用
3、一个子类只能有一个父类,但是如果A类是B类的父类,A类又是C类的子类,那么相当于C类是B类的祖父类
java中不能对继承,但是可以多层继承,子类也可以那到祖父类中的非私有的属性和方法
4、子类不能继承父类的构造函数,虽然构造函数也是public修饰的,但是构造函数是用来创建对象的,所以
子类不能继承父类的构造函数来创建父类对象
5、一个父类可以有多个子类
如果要调用父类中的元素,使用super关键字,比如在子类调用父类构造函数中的元素的时候
public Dog(String name, String sex, int age, String foodType, String type) {
//super:表示调用父类中的元素
super(name, sex, age);//这三个元素赋值给父类中的属性
this.foodType = foodType;
this.type = type;
}
super(name, sex, age)相当于给父类中的三个元素进行赋值
public Animal(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
继承的好处:
1、继承的出现提高了代码的可复用性,提高了软件的开发效率
2、继承的出现让类与类之间存在了纵向的关系,为后面多态提供了前提