首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

类的组合

什么是组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外外一个类的对象 为什么用组合 组合是用来解决类与类之间代码冗余的问题 首先我们先写一个简单版的选课系统 class OldboyPeople...': 19, 'sex': 'male', 'stu_id': 1, 'score': 100} 如上设计了一个选课系统,但是这个选课系统在未来一定是要修改、扩展的,因此我们需要修改上述的代码 如何用组合...需求:假如我们需要给学生增添课程属性,但是又不是所有的老男孩学生一进学校就有课程属性,课程属性是学生来老男孩后选出来的,也就是说课程需要后期学生们添加进去的 实现思路:如果我们直接在学生中添加课程属性...,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性 class Course: def __init__(self, name, period...# 创造学生与老师 stu1 = OldboyStudent('tank', 19, 'male', 1) tea1 = OldboyTeacher('nick', 18, 'male', 10) 组合

42310

类的组合

组合类构造函数一般的定义形式如下: 类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表)...{ //初始化函数体 } 内嵌对象的初始化使用了 初始化列表 来完成——内嵌对象必须使用初始化列表来实现初始化...这个时候,构造函数的调用顺序如下所示: 调用内嵌对象的构造函数,调用顺序按照内嵌对象在组合类中的定义中出现的顺序。...析构函数的调用执行顺序与构造函数正好相反 ,析构函数的函数体被执行完毕之后,内嵌对象的析构函数开始被一一执行——它们的调用顺序,跟它们在组合类的定义中的顺序正好相反。...如果我们想要为组合类编写复制构造函数的话,那么我们需要为内嵌对象成员的复制构造函数传递参数。...如果我们想要为组合类编写复制构造函数的话,那么我们需要为内嵌对象成员的复制构造函数传递参数。

27610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java--类和对象之组合和继承

    : 衍生类的构造器会自动调用基础类的无参构造器进行初始化;但如果你为基础类写了带参构造器而没有写无参构造器,又没有在衍生类的构造器中显式调用基础类的带参构造器,就会出错。...衍生类的构造器中要首先设置对基础类的构造器的调用,这意味着在它之前不能出现任何东西。这种设计能够保证基础类总是能在衍生类调用它之前得到正确的初始化。...组合 or 继承? 其实这涉及到设计模式的问题----组合模式。如果一个问题可以描述成整体和部分的关系,组合模式是最合适的,比如上面的汽车类和车门、轮子、发动机类之间的关系。...而继承则适用于属于关系,如上面的动物类和狗类、猫类之间的关系。 因为组合有着极大的简洁性和灵活性,所以一般情况优先考虑利用组合。有一种情况必须使用继承--上溯造型。...然而,由于它禁止了继承,所以一个 final 类中的所有方法都默认为 final。

    1.1K80

    java中的类

    2.类–具有共同性质的一组事物的群体。 人类。 在java中用来描述具有共同性质的一组事物的自定义的复合数据类型—类。...复合数据类型的本质—【根据自己的需求制作自己需要的数据类型的模式/规则/公式】 4.2.如何编写一个Java类?...{ } 4.3.Java类中可以编写什么?...基本属性——变量 基本功能—–方法 变量–是用来在类中描述事物的基本属性 方法–是用来在类中描述事物的基本功能 4.4.Java类中变量的分类及其基本特征?...在同一个类中成员变量与某一个方法中的局部变量的名称相同,这是我们在方法中使用这个成员变量的时候,得到的结果是局部变量的值,此时就是方法中的局部变量将类中成员变量的值隐藏了,这就是成员变量的隐藏。

    1.5K30

    Java中Date类与Calendar类

    Java中Date类与Calendar类 Java中有两个与时间相关的常用类:Date类与Calendar类,开始在做题目的时候一无所知,通过查阅网上的资料有了一些基本的了解....(其实也可以查看Java的API,这是十分有效的学习方法,以后要加强这种意识). 例题 java.util 包中由一个类 GregorianCalendar,可以使用它获得某个日期的年、月、日。...显示当前的年月日和按照某一基准计算指定日期都可以直接使用Java已有的Calendar类,具体资料可以参考Java Calendar类,包含了Calendar类的许多属性与方法,主要的有:Calendar...import java.util.Calendar; public class ShowDate { public void printCurrentDate(){...中的有许多重要类、常用类,需要经常查阅熟记用法,并在代码中多多运用,这是学好Java的十分重要的一步.

    68720

    Java中File类详解

    注意 File类是一个与系统无关的类,任何操作系统都可以使用这个类的方法; 4、重点记住这三个单词 file:文件 directory:文件夹 path:路径 二、File类的静态成员变量 1、static...2、static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串 3、代码 //备注:名称分隔符和路径分隔符在不同的系统中是不一样的...File.pathSeparator);//; 三、绝对路径和相对路径 1、绝对路径 以盘符开始的路径,是一个完整的路径; 2、相对路径 相对于当前项目的根目录,简化后的路径; 3、注意 ①路径不区分大小写; ②路径中的名称分隔符在...代码演示: package study.file; import java.io.File; import java.io.IOException; public class Test {...; } } } 八、目录的遍历 代码演示: package study.file; import java.io.File; import java.io.IOException

    27610

    Java中嵌套类用法

    在Java中,可以在另一个类中定义一个类。这些类称为嵌套类。它们使您能够对只在一个地方使用的类进行逻辑分组。因此,这增加了封装的使用,并创建了更具可读性和可维护性的代码。...嵌套类的作用域由其封闭类的作用域限定。因此,在上面的例子中,类NestedClass并不独立于类的 OuterClass外部类而存在。 嵌套类可以访问嵌套类的成员,包括私有成员。...nestedObject = new OuterClass.StaticNestedClass(); // Java program to demonstrate accessing //...然后,使用以下语法在外部对象中创建内部对象: OuterClass.InnerClass innerObject = outerObject.new InnerClass(); There are two...special kinds of inner classes : // Java program to demonstrate accessing // a inner class // outer

    2.3K40

    Java中System类详解

    还记得你们的第一个Java入门程序“hello world!”吗?它的输出语句是:System.out.println("hello world!");请问大家对这条语句知道多少呢?...1、System类简介 System类代表当前Java程序的运行平台,位于java.lang包下,该类被private修饰,所以不能创建System类的对象,System类提供了一些类变量和方法,允许直接通过...,并输出JAVA_HOME环境变量,以及os.name系统属性的值,运行结果由于太多,这里就不展示了,大家可以自己动手执行下代码看具体的运行结果。...6、gc() 调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象或失去了所有引用的对象,以便能够快速地重用这些对象当前占用的内存。...当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。 7、exit() exit(int)方法终止当前正在运行的 Java 虚拟机,参数解释为状态码。

    89230
    领券