Java寒假学习Day13:继承

前言

前几天一直在琢磨实验2,基本算是整明白+自己过了两遍,还不错

1.类与类之间的关系

1.1依赖关系

对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返
回值建立的对于其他对象的调用关系。
public class Student {
	String name;//Stirng类类型的name
	public void print(String name) {
		System.out.println(name);
	}
}

类Student中引用了String类,Student类和String类就是依赖关系

1.2关联关系

对象之间一种引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性表达。
关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。 
关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存
的,或者说需要“持久化”的,或者说需要保存到数据库中的。另外,依赖表示类之间的是
一种“临时、短暂”关系,这种关系是不需要保存的

 

class Husband{
private Wife wife; }
class Wife{
private Husband husband; }

1.3 聚合关系

聚合(关联关系的一种):表示 has-a 的关系。与关联关系一样,聚合关系也是通过实例变
量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的
区分两者的区别。
如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。
与关联关系一样,聚合关系也是通过实例变量来实现的。
class Car{
private Engine engine;//引擎
private Tyre[] tyres;//轮胎
}

1.4组合关系

对象 A 包含对象 B ,对象 B 离开对象 A 没有实际意义。是一种更强的关联关系。人包含手,
手离开人的躯体就失去了它应有的作用。
组合:表示 contains-a 的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。
也使用属性表达组合关系,是关联关系的一种,是比聚合关系强的关系。
class Window{
private Menu menu;//菜单
private Slider slider;//滑动条
private Panel panel;//工作区
}

1.5继承关系(泛化)

 比如人类Person(),学生类Student()

Student()满足人类Person()的特性,同时有作为Student的个性功能

Student()就可以是对Person()类的继承

2.继承关系

以Person类和Student类举例

2.1Person类(父类)

package Extends;

public class Person {
	String name;
	int age;
	String phone;
	
	public Person() {
		
	}
	public Person(String name,int age,String phone) {
		this.name = name;
		this.age = age;
		this.phone = phone;
	}
	
	public void eat() {
		System.out.println("吃饭");
	}
	
	public void sleep() {
		System.out.println("睡觉");
	}
}

2.2Student类(子类)

package Extends;

public class Student extends Person{
	String Sid;
	
	public Student() {
	}
	
	public Student(String name,int age,String phone,String Sid) {
		this.name = name;
		this.age = age;
		this.phone = phone;
		this.Sid = Sid;
	}
	
	public void study() {
		System.out.println("学习");
	}
}

可以看出在子类Student继承(extends)了父类Person类以后,Student也具有了父类的所有方法和属性

2.3为什么要继承?

/*
 * 面向对象的特征之二:继承性    why?
 * 
 * 一、继承性的好处:
 * ① 减少了代码的冗余,提高了代码的复用性
 * ② 便于功能的扩展
 * ③ 为之后多态性的使用,提供了前提
 * 
 * 

 * 四、 1. 如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
 *    2. 所有的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object类
 *    3. 意味着,所有的java类具有java.lang.Object类声明的功能。
 */

2.4继承的格式

 /*
* 二、继承性的格式: 
 *    class A extends B{}
 *    A:子类、派生类、subclass
 *    B:父类、超类、基类、superclass
 *    
 *    2.1体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法。
 *    	特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。
 *    只有因为封装性的影响,使得子类不能直接调用父类的结构而已。
 *    2.2 子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展。
 *    子类和父类的关系,不同于子集和集合的关系。
 *    extends:延展、扩展
 */ 

2.5Java中继承的规则

 /*
 * 三、Java中关于继承性的规定:
 * 	  1.一个类可以被多个子类继承。
 *    2.Java中类的单继承性:一个类只能有一个父类
 *    3.子父类是相对的概念。
 *    4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类
 *    5.子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法
  */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值