『Java』面向对象--继承+接口

java是一门面向对象的编程语言.其继承为面向对象中的一大亮点.

 

继承extends

好处:1,提高代码的复用性,简化代码.

好处:2,让类与类之间产生了关系,有了这个关系,才有了多态的特性.[注意:千万不要为了得到某个功能,而胡乱继承,必须类与类之间有那么一层所属关系后才可以继承]

 

java语言中只支持单继承(一个孩子只能有一个爸爸哦)

因为,多继承容易带来安全隐患:当多个父类定义了相同的功能,当功能内容不同时,子类对象不确定要运行那个.[优化了C++的多继承部分]但,java保留了这种机制,并用别一种体现来完成表示-------多实现(下面有详细概述).

 

java支持多层继承(说白了,就是祖孙三代)

如何使用一个继承体系中的功能?

想要使用体系,先查阅体系父类的描述,因为父类中定义的是该体系中的共性功能.同过了解共性功能,就可以知道该体系的基本功能.

 

在具体调用时,为何要创建最子类的对象?

1,因为有可能父类不能创建对象[抽象类和接口]

2,创建子类对象可以使用更多功能(就是说,除了父类中的基本功能外,还可以包括自己特有的)

 

子父类出现后,类成员的特点:

:变量:   如果子类中出现非私有的同名成员变量时,子类访问本类中的变量,用this(this代表本类对象的引用)

子类访问父类中的同名变量时,用super(super代表父类对象的引用)

 

子父类中的函数:   当子类出现和父类一模一样的函数时,当子类对象调用该函数时,会运行子类函数的内容,如同父类的函数被覆盖一样.这种情况是函数的另一个特性,重写(覆盖);当子类继承了父类,沿袭了父类的功能,到子类中,但是子类虽然具备该功能,但是功能的内容确和父类不一致,这时没必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写功能内容既可.

[有利于功能的扩展]注意:1,子类覆盖父类,必须保证子类权限大于等于父类权限(就是函数前的修饰符public ,private,默认),否则编译失败

2,静态只能覆盖静态

子父类中的构造函数:   在对子类对象进行初始化时,父类的构造函数也会运行(又儿子之前,要先有爸),这是因为子类的构造函数默认第一行有一条隐士的语句super();

super():会访问父类中的空参数的构造函数.而且子类中所有的构造函数默认第一行都是super();

 

子类一定要访问父类的构造函数,为什么?

因为,父类中的数据,子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的.[既调之则全之]

如果访问父类中指定的构造函数,可以通过手动定义super语句的方式来制定.

 

接口interface

特点:

1,接口中常见定义:常量,抽象方法

2,接口中的成员都是固定修饰符(对外暴露的规则)常量修饰符:public  static final     方法修饰符;public abstract,

3,接口是程序的功能扩展,可以来多实现

4,降低偶合性(下面扩展中有详细说明)

5,类与接口之间是实现关系,而且类可以继承一个类的同时还能实现多个接口

 

注意:   接口是不可以创建对象的,因为有抽象方法.需要被子类实现(implements),子类对接口的抽象方法全都覆盖后,子类才可以实例化.否则子类也是个抽象类.

接口可以被多实现,也是对多继承不支持的转换形式.java支持多实现(因为没有方法体,都是抽象的方法,可以由子类任意定义

注意,接口与接口之间存在多继承,但不能出现以下情况:

接口A中定义  public abstract int show();

接口B中定义public abstract boolean show();

接口C继承A,B

 

final:最终,作为一个修饰符

1,可以修饰,函数,变量

2,被final修饰的类不可以被继承,为了避免被继承,被子类复写功能

3,被final修饰的方法不可以被复写

4,被final修饰的变量是一个常量,只能赋值一次.

5,内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量

 

抽象类:当多个类中出现相同功能,但是功能主题不同.这时如果向上抽取,可以只抽取功能定义,而不抽取功能主题.

特点:

1,抽象方法一定在抽象类中

2,抽象方法和抽象类都必须被abstract关键字修饰

3,抽象类不可以用new创建对象,因为,调用抽象方法没有意义.他没有方法体.

4,抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用.如果子类只覆盖了部分抽象方法,那么该子类也是一个抽象类.

抽象类中的抽象函数,也是该事物的一个功能,需要明确出现,但是无法定义主题.

 

 

扩展-----聚集关系,来自软件工程

 

 聚集是关联的一种形式,代表两个类之间的整体 / 局部关系。聚集暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。在需求分析中,“包含”,“组成”,“分为……部分”等经常设计成聚集关系。

    聚集的图示方式为,在表示关联关系的直线末端加一个空心的小菱形,空心菱形紧挨着具有整体性质的类。聚集关系中可以出现重数,角色(仅用于表示部分的类)和限定词,也可以给聚集关系命名。

    有两种特殊聚集:共享聚集和组合聚集。

    共享聚集的特征是:它的“部分”对象可以是多个任意“整体”对象的一部分。 比如,一个球队(整体方)由多个球员(部分方)组成,但是一个球员还可能加入了多个球队,球队和球员之间的这种关系就是共享聚集。共享聚集关系可以通过聚集的重数反映出来,不必引入另外的图标符号。如果作为整体方的类的重数不是 1 , 那么该聚集就是共享聚集。所示图中从球员到球队的关联的重数为多个 。

 

 

 

 

 

在组合聚集中,整体拥有各部分,部分与整体共存。如整体不存在了,部分也会随之消失。 比如窗口由标题,外框和显示区组成。 一旦窗口消亡,则各部分同时消失。 整体方的重数必须是零或 1 , 部分方的重数可取任意范围值。

    组合聚集表示为实心菱形,菱形指向整体部分。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.UML的系统分析进一步要确立的三个系统模型是(对象静态模型)、对象动态模型和系统功能模型。 2.UML的的客户需求分析、系统分析和系统设计阶段产生的模型,其描述图符( 完全相同 )。 3.类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必须有( 具体值 )。 4.UML系统分析阶段产生的包图描述了系统的(系统体系层次结构 )。 5.在UML软件开发过程系统分析阶段产生的对象模型有三种模型。它们是:对象的 静态 模型、对象的 动态模型和对象的 系统功能 模型。 6.在UML的类图中,类之间的关系有 泛化 、 实现 、 聚集 、 依赖 和 关联 5种。 7.共享聚集的“部分”对象可以是任意“整体”对象的一部分,表示事物的整体/部分关系较弱的情况,“整体”端的重数应该是 n 。 8.在UML软件开发过程的需求分析和系统分析阶段,建立类模型的步骤分为 寻找确定类 、 定义类的接口 、定义类之间的关系、建立类图 和 建立系统包图 。 9.组合聚集是指“整体”拥有它的“部分”,它具有强的物主身份,表示事物的整体/部分关系较强的情况。“部分”生存在“整体”中,不可分离,它们与“整体”一起存在或消亡。“整体”的重数必须是 1 。 10.封装是指把对象的( 属性和操作 )结合在一起,组成一个独立的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值