类与类的关系

简介: ## 继承关系 1.子类想要继承父类,通过extends关键字来实现 2.子类继承了父类,可以调用父类中(public protected)的属性和方法 2.1构造方法严格意义来说 不算做子类继承过来 只是单纯的在子类调用构造方法时默认调用父类的构造方法 2.2程序块严格意义来说 不算做子类继承过来(子类自己调用不到 没名字) 程序块子类不能直接调用 子类执行构造方法之前 默认调用了父类的构造方法 父类构造方法之前自动执行父类的块 3.子类除了能继承父类的属性和方法外,子类还可以添加自己独有的成员(属性 方法)

## 继承关系

   1.子类想要继承父类,通过extends关键字来实现

   2.子类继承了父类,可以调用父类中(public protected)的属性和方法

2.1构造方法严格意义来说 不算做子类继承过来  

     只是单纯的在子类调用构造方法时默认调用父类的构造方法

2.2程序块严格意义来说 不算做子类继承过来(子类自己调用不到 没名字)

     程序块子类不能直接调用  子类执行构造方法之前  

     默认调用了父类的构造方法 父类构造方法之前自动执行父类的块

   3.子类除了能继承父类的属性和方法外,子类还可以添加自己独有的成员(属性 方法)

   4.当父类继承过来的方法无法满足子类的需要,可以进行方法重写(override)

4.1关于 方法重写(override) 和 方法重载(overload)区别

     类         继承关系两个类           一个类

     权限 子类可以大于等于父类  没有要求

     特征 final static abstract  没有要求

 父类是final  子类不能重写

 父类是static 子类不存在重写

 父类是abstract 子类必须重写 否则子类也得是抽象类

     返回值 子类可以小于等于父类  没有要求

     方法名 子类必须与父类一致  几个方法的名字必须一致

     参数 子类必须与父类一致  几个方法的参数必须不一致(个数 类型 顺序)

     异常 编译时 运行时  没有要求

 如果父类抛出运行时 子类可以不予理会

 如果父类抛出编译时  

 子类抛出异常的个数要少于等于父类

 子类抛出异常的类型要小于等于父类

     方法体 通常方法体执行与父类不一致 通常几个方法之间执行不同的操作

   5.每一个类都有继承类,若定义了extends关键字,则直接继承

   该类(间接继承Object),若没有定义extends,则默认继承Object

Object类很重要,他是所有引用类型的父类,Object类是没有父类的

Object类中的方法

 *equals() *hashCode()    *toString()

 getClass()

 wait()   notify()   notifyAll()

 finalize()   clone() 这两个方法都是protected修饰符

 注意:希望大家记忆  方法名字  方法参数  方法返回值  方法是否存在重载

        最好常用的方法需要知道他的源代码如何实现

   6.Java中类的继承是单继承,指的是一个extends关键字后面只允

   许写一个类,可以通过传递的形式来实现多继承(后续多实现)

   7.深入理解继承在内存中的存储结构

   8.this与super关键字的区别

this和super都是代替对象

this代替的是执行属性或方法时的当前这个对象

super代替的是当前对象的父亲对象

this和super都可以调用一般的属性或方法,放置在类成员的任意位置

方法之间是可以来回调用(编译好用),执行时注意StackOverflowError的问题

this和super都可以调用构造方法,只能放在另一个构造方法第一行

当利用this或super调用构造方法时,他们两个不能同时出现(他们都想抢占第一行,冲突啦)

       类的个数变多啦--->需要管理类--->包package(可以理解为是一个文件夹)

 在我们类的第一行会出现package关键字

 如果package和import同时出现

 先写package后写import

 package只能有一个  import可以有多个

 

类的关系

has-a 包含关系(组合 聚合 关联)    语义

 从亲密程度来讲不太一样

 组合-->人和大脑   人和心脏的关系

            整体和部分的关系 不可分割  要出现都出现  要消亡都消亡

 聚合-->汽车和车轮子    电脑和主板

            整体和部分的关系  创建时有可能是分开的

 关联-->人有汽车   人有电脑

            整体和部分的关系  可以分割  后来形成在一起

 从Java程序来描述这样的关系  通过一个类的对象当做另一个类的属性来存储

use-a(need-a) 依赖关系

 屠夫  杀  猪

 一个类屠夫

  可以做一件事情  杀猪

  需要一头猪

 不是整体和部分的关系   某一件事情产生了关系    

 临时组合在一起   这件事情一旦做完关系即解散

 Java程序体现的形式为:

 一个类的方法中使用到了另一个类的对象

  第一个可以在方法中传递参数

  第二个可以在方法中自己创建

设计类的关系遵循的原则:高内聚低耦合

耦合度:  紧密   继承(实现) > 包含 > 依赖

目录
相关文章
|
4天前
|
C#
57.c#:directorylnfo类
57.c#:directorylnfo类
16 0
|
4天前
|
设计模式 存储 Java
【类图、类与类的关系、多态】
学习Java面向对象,掌握UML类图绘制,包括14种图形,使用PowerDesigner演示类图创建。理解类与类的关系,如继承、实现、依赖、关联、聚合、组合,以及`instanceof`关键字。学习简单工厂设计模式,实现多态,理解其在面试和设计原则中的重要性。通过实例操作,如String类常用方法、汽车与4S店案例,加深对面向对象概念的理解。最后,探讨面向对象设计原则,如单一职责、开闭原则、里氏替换原则、依赖倒置、接口隔离、迪米特法则和组合/聚合复用原则。
36 1
|
8月前
2.【类的组合(在一个类中定义一个类)】
2.【类的组合(在一个类中定义一个类)】
17 0
|
9月前
|
Java
类之间的比较
类之间的比较
35 0
|
11月前
|
编译器 C语言 C++
C++ 之什么是类 & 对象的关系?
C++ 之什么是类 & 对象的关系?
|
11月前
|
C语言 C++
习题10.3 分别定义Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_Cadre类。
习题10.3 分别定义Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_Cadre类。
185 0
接口vs抽象类、继承vs组合,他们之间有啥关系
接口vs抽象类、继承vs组合,他们之间有啥关系
普通类,抽象类和接口之间的区别
普通类,抽象类和接口之间的区别
|
编译器 数据安全/隐私保护
【C++Primer】第7章:类
【C++Primer】第7章:类
|
存储 iOS开发 开发者
NSBundle类
NSBundle类
158 0
NSBundle类