JAVA面向对象程序设计之多态、包

本文详细介绍了JAVA面向对象程序设计中的多态和包,欢迎读者朋友们阅读、转发和收藏!

1 基本概念

1.1 多态

多态是同一个行为具有多个不同表现形式或形态的能力。多态性是对象多种表现形式的体现。现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

多态存在的三个必要条件:

继承

重写

父类引用指向子类对象

比如:

Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

以下是一个多态实例的演示,详细说明请看注释:

public class Test {

public static void main (String[] args ) {

show (new Cat()); // 以 Cat 对象调用 show 方法

show (new Dog()); // 以 Dog 对象调用 show 方法

Animal a = new Cat(); // 向上转型

a . eat (); // 调用的是 Cat 的 eat

Cat c = (Cat) a ; // 向下转型

c . work (); // 调用的是 Cat 的 catchMouse

}

public static void show (Animal a ) {

a . eat ();

// 类型判断

if ( a instanceof Cat) { // 猫做的事情

Cat c = (Cat) a ;

c . work ();

} else if ( a instanceof Dog) { // 狗做的事情

Dog c = (Dog) a ;

c . work ();

}

}

}

abstract class Animal {

abstract void eat ();

}

class Cat extends Animal {

public void eat () {

System.out. println (" 吃鱼 ");

}

public void work () {

System.out. println (" 抓老鼠 ");

}

}

class Dog extends Animal {

public void eat () {

System.out. println (" 吃骨头 ");

}

public void work () {

System.out. println (" 看家 ");

}

}

执行以上程序,输出结果为:

吃鱼

抓老鼠

吃骨头

看家

吃鱼

抓老鼠

1.2 包

为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。

包的作用

1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

3 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

包语句的语法格式为:

package pkg1 [. pkg2 [. pkg3 …]];

例如,一个Something.java 文件它的内容

package net . java . util

public class Something{

...

}

那么它的路径应该是 net/java/util/Something.java 这样保存的。package(包)的作用是把不同的java程序分类保存,更方便的被其他java程序调用。

一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。由于package创建了新的命名空间(namespace),所以不会跟其他package中的任何名字产生命名冲突。使用包这种机制,更容易实现访问控制,并且让定位相关类更加简单。

创建包

创建package的时候,你需要为这个package取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个package的声明放在这个源文件的开头。

包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。

import 关键字

为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用"import"语句可完成此功能。

在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:

import package1 [. package2 …].( classname |*);

如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。类文件中可以包含任意数量的import声明。import声明必须在包声明之后,类声明之前。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200508A0QAW700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券