构造函数

201521123020 《Java程序设计》第3周学习总结

≡放荡痞女 提交于 2020-01-30 06:02:55
本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; public static void main(String[] args) { geti(); Test1getj(); } public static void geti() { System.out.println(i); } public static void getj() { System.out.println(j); } } 以上代码可否编译通过?哪里会出错?为什么?尝试改正? 如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因? 答:编译无法通过。System.out.println(i)会出错,因为它不是一个静态的对象。public static void geti()改为public void geti() 内存中有三个i,一个j,因为静态对象每个类只有一个储存空间. 2.构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数

201521123102 《Java程序设计》第3周学习总结

感情迁移 提交于 2020-01-30 06:02:44
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。 2. 书面作业 Q1.代码阅读     public class Test1 {     private int i = 1;//这行不能修改     private static int j = 2;     public static void main(String[] args) {     geti();     Test1.getj();      }     public static void geti() {     System.out.println(i);     }     public static void getj() {      System.out.println(j);      }     } 以上代码可否编译通过?哪里会出错?为什么?尝试改正? 如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因? 答:以上代码不能编译通过;第七行和第十一行; 第七行添加定义: private static void Test1getj() { // TODO Auto-generated method stub }; 第十一行不能用静态i引用非静态字段;

201521123095 《Java程序设计》第3周学习总结

天大地大妈咪最大 提交于 2020-01-30 06:02:24
, 1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。 2. 书面作业 1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; public static void main(String[] args) { geti(); Test1getj(); } public static void geti() { System.out.println(i); } public static void getj() { System.out.println(j); } } 上代码可否编译通过?哪里会出错?为什么?尝试改正? 不能通过,找不到geti()的方法。因为geti()方法为静态,调用的成员也必须为静态,但i为非静态成员。 应该将public static void geti()改为public void get(inti)。 如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因? 3个i,i作为非静态变量,每创造一个对象就占用一个内存,创建3个Test1对象就有3个i。 1个j,j作为静态变量,创建对象时只占用一个内存。 2.

201521123032 《Java程序设计》第3周学习总结

依然范特西╮ 提交于 2020-01-30 06:02:00
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。 2. 书面作业 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; public static void main(String[] args) { geti(); Test1getj(); } public static void geti() { System.out.println(i); } public static void getj() { System.out.println(j); } } 以上代码可否编译通过?哪里会出错?为什么?尝试改正? 如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因? 以上代码不能编译通过,访问i时,系统提示要将i变成static的静态变量才能被访问,Text1getj()也会出现错误,我尝试了下用get和set还是会出现错误,系统还是提示要把i变成static的静态变量才行,就放弃了。 如果创建3个Text1对象,那么内存中会有3个i,1个j。因为i是非静态的每创建一个新对象就会占用一个内存,而J是静态的只会占用一个内存。

ES6 类和对象

旧巷老猫 提交于 2020-01-30 03:57:18
基本编程思想 面向过程 面向过程就是分析出解决问题所需要的步骤,然后函数把这些步骤一步一步实现,使用的时候再一个一个依次调用就可以了 面向过程就是按照我们分析好的步骤,按照步骤解决问题 面向对象 面向对象是把事物分解为一个个对象,然后对象之间分工合作 面向对象是以对象来划分问题,而不是步骤 特点 封装性 继承性 多态性 举例:将大象装进冰箱 面向过程做法: 1.打开冰箱 2.将大象放进去 3.关上冰箱门 面向对象做法: 1.大象对象 进去 2.冰箱对象 打开 关闭 3.使用大象和冰箱的功能 对比 面向过程 优点:性能别面向对象高,适合跟硬件联系紧密的东西,例如单片机就采用的面向过程编程 缺点:没有面向对象易维护、易复用、易扩展 面向对象 优点:易维护、易复用,由于面向对象有封装、继承、多态性的特性、可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点:性能比面向过程低 ES6中的类和对象 对象 js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。 对象是由属性和方法组成的: 属性:事物的特征,在对象中用属性来表示 方法:事物的行为,在对象中用方法来表示 类 class ES6中新增加了类的概念,可以使用 class 关键字声明一个类,之后以这个类来实例化对象 类抽象了对象的公共部分,它泛指某一大类(class) 对象特指某一个

C++类的继承与派生

孤街浪徒 提交于 2020-01-29 15:06:18
  C++中,继承就是在一个已存在的类的基础上建立一个新的类。已存在的类称为基类,又称父类;新建立类称为派生类,又称为子类。   基类是对派生类的抽象,派生类是对基类的具体化。 (一)派生类的定义与构成 1)派生类的定义   class 派生类名:类派生列表{     成员列表   };   类派生列表指定了一个或多个基类,形式如下:   访问权限标号 基类名1,访问权限标号 基类名2,... 2)派生类的构成   派生类由两部分组成:第一部分是从基类继承得到的,另一部分是自己定义的新成员,这些成员仍然分为三种访问属性。   注意,友元关系是不能继承的:一方面,基类的友元对派生类成员没有特殊的访问权限;另一方面,如果基类被授予了友元关系,则只有基类有特殊访问权限,该基类的派生类不能访问授予友元关系的类。   实际编程中,设计一个派生类包括三个方面工作:   a)从基类接收成员。   除了构造函数与析构函数之外,派生类会把基类的全部成员继承过来。   b)调整基类成员的访问。   程序员可以对接收的成员指定访问策略。   c)在定义派生类时增加新的成员。另外还应该自己定义派生类的构造函数和析构函数,因为它们不能从基类继承过来。 (二)派生类成员的访问   不同的继承方式决定了基类成员在派生类中的访问属性 1)公有继承   基类的公有成员和保护成员在派生类中保持原有访问属性

voxel折腾指南

那年仲夏 提交于 2020-01-29 11:21:33
voxel是一个轻便的3D渲染的库,开发3D场景非常方便,当然你甚至可以很方便的利用他来搭建你的宫殿。 目前我将它用到了我的博客主页,演示地址: http://djlxs.herokuapp.com/ voxel var myVoxel = new voxelcss.Voxel(100, 250, 0, 300, { mesh: voxelcss.Meshes.grass }); 当然如果要单独设置每个面的颜色可以这种 new voxelcss.Voxel(0, 0, 0, 100, { mesh: new voxelcss.Mesh({top:new voxelcss.ColorFace("#c40000")}) }) 用于创建一个新的立方体 Voxel(x, y, z, dimension, options) x,y,z代表立方体的位置坐标,dimension就是尺寸 option用来设置立方体的颜色也可以是背景图片 sence 场景 可以看成一个相机 主要用来对整个的 进行平移 旋转 缩放(就像一个相机一样进行调焦) 属性:rotate(x, y, z) 和css动画里面的rotate类似。当然就会有类似的三个细分的属性 rotateY(Y) rotateX(x) rotateZ(z) pan(x, y, z) 平移 也有类似的3个细分的属性,类似于translate

让自己习惯C++

烂漫一生 提交于 2020-01-29 11:12:00
条款一:视C++为一个语言联邦 今天的C++是个多重泛型编程语言(multiparadigm programming language),一个同时支持过程(procedural)、面向对象(object-oriented),函数形式(functional),泛型形式(generic),元编程形式(metaprogramming)的语言。 C++主要的次语言: C。 Object-Oriented C++。class、封装、继承、多态等。 Template C++。C++泛型编程部分。 STL。容器、迭代器、算法以及函数对象 条款二:尽量以 const、enum、inline 替换 #define #define 是在预处理阶段处理的,记号从未被编译器看见,所使用的名称也可能从未进入记号表(symbol table)。 解决方法是以一个常量替换宏。 有一个特殊情况是 class 专属常量。将常量的作用域限制在类内,必须让它成为 class 的 一个成员;为了确保此常量至多只有一份实体,必须让它成为 static 成员。 12345678910 class GamePlayer {private: static const int NumTurns = 5; // 常量声明式 int scores[NumTurns]; // 使用该常量}; 通常 C++

设计模式:控制反转IoC、依赖注入DI

大憨熊 提交于 2020-01-29 08:17:51
基本概念 控制反转 (Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。 其中最常见的方式叫做 依赖注入 (Dependency Injection,简称DI),还有一种方式叫“ 依赖查找 ”(Dependency Lookup)。 技术说明 Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。 采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。 举例 下面的代码中有一个 Database的类,它需要一个适配器来与数据库交互。我们在构造函数里实例化了适配器,从而产生了耦合。 <?php namespace Database ; class Database { protected $adapter ; public function __construct ( ) { $this - > adapter = new MySqlAdapter ; } } class MysqlAdapter { } 上面代码产生的问题: 1、如果现在要改变 adapter 生成方式,如需要用new

C++-Record17—构造和析构的基本知识

馋奶兔 提交于 2020-01-29 08:02:19
目录 基本概念 有关构造函数 有关析构函数 案例讲解 构造与析构对函数来说有什么用呢? 总体代码 创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。 为了解决这个问题,C++编译器提供了 构造函数 (constructor) 来处理对象的初始化。构造 函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。 基本概念 有关构造函数 1、构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数; 2)构造函数在定义时可以有参数; 3)没有任何返回类型的声明。 2、构造函数的调用 自动调用 :一般情况下C++编译器会自动调用构造函数 手动调用 :在一些情况下则需要手工调用构造函数 有关析构函数 1、析构函数定义及调用 1)C++中的类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数 语法:~ClassName() 2)析构函数没有参数也没有任何返回类型的声明 3)析构函数在对象销毁时自动被调用 2、析构函数调用机制 C++编译器自动调用 案例讲解 class Test { public: Test() //无参数 构造函数 { a = 10; //作用完成对属性的初始化工作 p = (char *)malloc(100);