第4章Java程序结构
返回 第4章 Java程序结构
Java语言是一种纯面向对象的程 序设计语言,它的核心概念是类和 对象,它的程序是基于类和对象建 造的,程序中类的结构决定了程序 的结构。这一章较深入系统地介绍 Java程序的结构,介绍组成Java程序 的类之间的关系
Java语言是一种纯面向对象的程 序设计语言,它的核心概念是类和 对象,它的程序是基于类和对象建 造的,程序中类的结构决定了程序 的结构。这一章较深入系统地介绍 Java程序的结构,介绍组成Java程序 的类之间的关系
Java程序结构 ●类层次结构 ●对象的使用与对象间通信 ●多态性 ●接口与包 ●访问控制与修饰符
Java程序结构 类层次结构 对象的使用与对象间通信 多态性 接口与包 访问控制与修饰符
类层次结构 ●继承的概念 ●继承的描述 ●类的继承规则 ●变量的隐藏
类层次结构 继承的概念 继承的描述 类的继承规则 变量的隐藏
继承的概念 ●在日常生活中,我们常用“是 种(is-a)”关系来组织与表达 知识,从而将知识组织成一种有 层次、可分类的结构。面向对象 程序设计方法将i-a关系引入到 程序设计领域,用于描述类与类 之间的关系,称之为继承
继承的概念 在日常生活中,我们常用“是一 种(is-a)”关系来组织与表达 知识,从而将知识组织成一种有 层次、可分类的结构。面向对象 程序设计方法将is-a关系引入到 程序设计领域,用于描述类与类 之间的关系,称之为继承
多态性 ●同一运算或方法(如“+”)对不同类型的 对象(如整型数,或字符串)有不同的语 义解释。这种在程序中同一方法对不同类 型的对象有不同解释的现象称为多态性 ●多态性与继承是密不可分的。通常,两类 对象都有共同的父类,在父类中定义的方 法在这两个子类中分别有不同的实现
多态性 同一运算或方法(如“+”)对不同类型的 对象(如整型数,或字符串)有不同的语 义解释。这种在程序中同一方法对不同类 型的对象有不同解释的现象称为多态性 多态性与继承是密不可分的。通常,两类 对象都有共同的父类,在父类中定义的方 法在这两个子类中分别有不同的实现
超类与子类 ●我们在声明类A时,指明类A继承了 类B(类B是一个已定义了的类) 则类A通常就拥有了类B的成员变量 和方法。此时,类B称为类A的直接 超类( superclass),超类也称为父 类或基类;类A称为类B的直接子类 ( subclass),子类也称为派生类
超类与子类 我们在声明类A时,指明类A继承了 类B(类B是一个已定义了的类), 则类A 通常就拥有了类B的成员变量 和方法。此时,类B称为类A的直接 超类(superclass),超类也称为父 类或基类;类A称为类B的直接子类 (subclass),子类也称为派生类
继承的描述 ●Java语言中,声明类首部的格式 如下: [类的修饰符] class类名[ extends超类名l[ implement接口名表 ●其中“ extends超类名”部分就是用 来描述继承的,这里超类名指明所 明类的直接超类
继承的描述 Java语言中,声明类首部的格式 如下: [类的修饰符] class 类名 [extends 超类名][implement接口名表] 其中“extends 超类名”部分就是用 来描述继承的,这里超类名指明所 声明类的直接超类
继承描述的演示 class car 声明car类 int car number; void set number(intcar_ num) car number= car num. void shot System. out printin("我的车号是:"+ car number); class trashCan extends Car∥声明 Trashcan类,它继承ca类 int capacity; void set capacity (int trash_ car_ capacipy) capacity =trash_car_ capacipy void show capacity System. out println("我的容量是:"+ capacIty+"");
继承描述的演示 class Car // 声明Car类 { int car_number; void set_number(int car_num) { car_number = car_num; } void show_number( ) { System.out.println("我的车号是:"+car_number); } } class TrashCar extends Car // 声明TrashCar类,它继承Car类 { int capacipy; void set_capacity(int trash_car_capacipy) { capacipy = trash_car_capacipy; } void show_capacity( ) { System.out.println("我的容量是:"+capacipy+" "); } }
类的继承规则 直接子类继承那些被声明为 public或 protected的直 接超类成员(包括成员变量和成员方法,下同) 直接子类继承那些未被存取权限修饰符修饰的直接 超类成员,只要该子类与该超类在同一个包中 ●如果直接子类声明了一个与直接超类中的成员回名 的成员,则该子类不继承该超类中的该同名成员 ●直接子类不继承被修饰为 private的直接超类的成员
类的继承规则 直接子类继承那些被声明为public 或protected的直 接超类成员(包括成员变量和成员方法,下同) 直接子类继承那些未被存取权限修饰符修饰的直接 超类成员,只要该子类与该超类在同一个包中 如果直接子类声明了一个与直接超类中的成员同名 的成员,则该子类不继承该超类中的该同名成员 直接子类不继承被修饰为private的直接超类的成员