java的定义类如何使用(java怎么定义实现类)

技术Java的组合类怎么定义这篇文章主要讲解了“Java的组合类怎么定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的组合类怎么定义”吧!我们可以在一个新类的定

本文主要讲解“如何定义Java复合类”。本文的解释简单明了,易学易懂。请跟随边肖的思路,一起学习学习“如何定义Java复合类”!

我们可以在新类的定义中使用其他对象。这是作文。组合是Java中实现程序可重用的基本手段之一。

组合与"has-a"

一个对象是另一个对象的数据成员。比如我们来看看前面提到的:充电手电筒的例子。

Java的组合类怎么定义

电池、发光二极管灯、按钮等。在一个可充电的手电筒里可以全部是一个物体。我们可以定义一个电池类来定义和生成电池对象。在充电手电筒的类定义中,电池对象可以作为其数据成员来表示电池部件的状态。

Java的组合类怎么定义

让我们定义一个电池类别,用功率来表示它的电量。电池可以充电和使用。在下面的Torch类定义中,我们使用Battery类型对象作为数据成员:

classBattery

{ publicationchargebatery(double p)

{ if(this . power 1)} { this . power=

this . power p;

}

} public booleaneusebattery(double p)

{if(this.power=p){this.power=

this . power-p;returntrue

} else { this.power=0.0returnfalse

}

} privatedoublepower=0.0

}课堂火炬

{

/**

* 10%的功耗

* warningwhenoutofpower

*/

公共无效关闭(以小时为单位)

{

     boolean usable;
        usable = 
this.theBattery.useBattery( hours*0.1 );        if (usable != 
true) {
            System.out.println("No more usable, must charge!");
        }
    }
    /**
     * 20% power per hour charge
     */    public void charge(int hours)
    {        this.theBattery.chargeBattery( hours*0.2 );
    }    /**
     * composition     */
    private Battery theBattery = 
new Battery();
}

上面的new为theBattery对象分配内存,不可或缺。

我们定义Battery类。Torch类使用了一个Battery类型的对象(theBattery)来作为数据成员。在Torch的方法中,我们通过操纵theBattery对象的接口,来实现Battery类所提供的功能(functionality)。

我们说,一个Torch对象拥有(has-a)一个Battery对象。上述关系可以表示成:

Java的组合类怎么定义

has-a: 手电有电池 (注意上面的菱形连线)

通过组合,我们可以复用Battery相关的代码。假如我们还有其他使用Battery的类,比如手机,计算器,我们都可以将Battery对象组合进去。这样就不用为每个类单独编写相关功能了。

我们可以增加一个Test类,看看实际效果:

public class Test
{    public static void main(String[] args)
    {
        Torch aTorch = new Torch();
        System.out.println("Charge: 2 hours");
        aTorch.charge(2);
        System.out.println("First Turn On: 3 hours");
        aTorch.turnOn(3);
        System.out.println("Second Turn On: 3 hours");
        aTorch.turnOn(3);
    }
}

上面程序的运行结果:

Charge: 2 hours
First Turn On: 3 hours
Second Turn On: 3 hours
No more usable, must charge!

我们通过组合来使用了电池对象所提供的功能,比如探测电量是否用尽(根据useBattery()的返回值)。

基本类型


从HelloWorld到面向对象中,我们将int, float, double, boolean等称为基本类型(primitive type),也就是特殊的类。我们可以将一个整数理解称为一个int类型的对象。int类型可以有赋值、加法、减法等操作接口。普通类型可以视作对基本类型的拓展。我们已经见过了基本类型作为数据成员、方法的参数、方法的返回值和方法内部的自动变量。自然的,普通类型的对象,比如Battery和Torch类的对象,也都可以用于这些地方。

C语言中,可用的数据类型(基本上)已经预设好,比如int, float。在Java中,我们除了可以用这些预设的数据类型外,还可以通过类来定制自己想要的数据类型,然后通过组合来使用。但基本类型和普通类型还是有所区别的。基本类型经常被使用,且所占据内存空间不大,所以在Java中,为了效率起见,这些基本类型与普通的类型(也就是自定义的类)的内存管理方式不同。比如,基本类型一旦声明就会被分配内存空间,而普通类型需要使用new关键字来分配内存空间。

Java为每个基本类型提供了相应的普通类型。比如int基本类型对应Integer类型。如果将基本类型的对象转成相应的普通类型变量,所谓的基本类型也就成为了一般意义上的类型(不再有内存管理上的不同)。

感谢各位的阅读,以上就是“Java的组合类怎么定义”的内容了,经过本文的学习后,相信大家对Java的组合类怎么定义这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154661.html

(0)

相关推荐

  • 如何使用Python+OpenCV进行图像模板匹配(Match Template)

    技术如何使用Python+OpenCV进行图像模板匹配(Match Template)这篇文章主要为大家展示了“如何使用Python+OpenCV进行图像模板匹配(Match Template)”,内容简而易懂,条理清晰

    攻略 2021年11月12日
  • 如何解决异步log4j2中的位置信息打印问题

    技术异步log4j2中的location信息打印问题怎么解决异步log4j2中的location信息打印问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习

    攻略 2021年12月23日
  • 世界四大文明古国是哪四个,世界四大文明古国是哪四国

    技术世界四大文明古国是哪四个,世界四大文明古国是哪四国:1、古巴比伦(位于西亚,今伊拉克); 2、古埃及(位于北非,今埃及); 3、古印度(位于南亚,地域范围包括今印度、巴基斯坦等国); 4、中国(位于东亚,今中华人民共

    生活 2021年10月20日
  • MySQL数据分析怎么解决

    技术MySQL数据分析怎么解决本篇内容主要讲解“MySQL数据分析怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据分析怎么解决”吧!作为最为流行的开源数据

    攻略 2021年12月3日
  • 初学算法-------递归

    技术初学算法-------递归 初学算法-------递归大部分内容在我的笔记里;
    这里讲一下不能只依靠递归:
    递归中终究还是有一个致命的缺陷就是在递归次数过多时会需要极大的运行空间,甚至会终止程序的运

    礼包 2021年12月5日
  • 追溯系统数据怎么做(大数据溯源)

    技术大数据中如何实现数据的高效追溯这篇文章给大家介绍大数据中如何实现数据的高效追溯,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如何基于GES图数据库追溯服务的实现和优化。“一分钟,我要这个人的全部

    攻略 2021年12月23日