实验五 方法的重载和静态成员

实验五 方法的重载和静态成员
实验五 方法的重载和静态成员

实验五方法的重载和静态成员

【实验目的】

1.巩固掌握构造方法的作用和定义;

2.掌握方法重载的意义和实现方式;

3.掌握静态成员的使用方法。

【实验准备】

复习配套教材相关章节的内容;

【实验内容】

项目一:

1.定义一个游戏中Hero 英雄的类,在该类中定义英雄的名字,生命值和等级

3 个属性,定义一个无参构造方法完成对名字、生命值和等级的初始化,分

别赋初值为“无名英雄”、100和1。同时实现名字和英雄信息的输出。

public class Hero {

String name;

int healthPower = 100;

int grade;

public Hero() {

https://www.360docs.net/doc/9211501467.html, ="无名英雄";

this.healthPower = 100;

this.grade=1;

}

void showInfo() {

System.out.println("——英雄信息——");

System.out.println("名字:" + https://www.360docs.net/doc/9211501467.html,);

System.out.println("生命值:" + this.healthPower);

System.out.println("类型:" + this.grade);

}

}

2.在上一步的基础上,为英雄再定义拥有一个参数的构造方法,第一个参数传

入英雄的名字,第二个参数传入一个英雄类型的值,如果为1,则为普通英雄,生命值为100;如果该值为2,则为高级英雄,生命值初始化为200;如果该值为3,则为超级英雄,生命值初始化为300。

Public Hero(String name, int grade) {

https://www.360docs.net/doc/9211501467.html, = name;

if (grade == 3) {

this.healthPower = 300;

this.grade = 3;

} else if (grade == 2) {

this.healthPower = 200;

this.grade = 2;

} else {

this.healthPower = 100;

this.grade = 1;

}

}

3.为英雄添加一个基本战斗的方法,该方法拥有一个英雄类型的参数,当传入

另一个英雄时,能降低对方10点血。再增加一个绝招战斗的重载方法,加入一个绝招类型参数,通过输入不同绝招参数,降低对方不同的血量(这里简化为:1,多杀伤3点血,2,多杀伤6点血,3,多杀伤10点血)。

void fight(Hero opponent) {

opponent.healthPower -= 10;

}

void fight(Hero opponent, int skill) {

opponent.healthPower -= 10;

if (skill == 3) {

opponent.healthPower -= 10;

} else if (skill == 2) {

opponent.healthPower -= 6;

} else if (skill == 1) {

opponent.healthPower -= 3;

}

}

4.在主类的主方法中编写代码,测试。

public static void main(String[] args) {

// TODO code application logic here

Hero superHero=new Hero("蜘蛛侠",3);

Hero opponent=new Hero();//对手

opponent.showInfo();

superHero.fight(opponent);

opponent.showInfo();

superHero.fight(opponent,2);

opponent.showInfo();

}

项目二:

设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Rest(余额)。有一个构造方法和三个实例方法Bankin()(处理存入账),Bankout()(处理取出账)和一个负责生成账号的自动增长的方法(构造方法中调用),另有一个静态方法实现输出,以供存取帐时调用。

static void prt(String s){

System.out.println(s);

}

【总结与体会】

请思考3分钟以上。

注意通过第一个项目体会,掌握方法的重载;第二个项目注意理解静态属性和方法。

课后作业:

1、编写一个类Book,代表教材:

具有属性:名称(title)、页数(pageNum)、种类(type)

具有方法:detail,用来在控制台输出每本教材的名称、页数、种类

具有两个带参构造方法:第一个构造方法中,设置教材种类为“计算机”(固

定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数

给定。

2、编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。

思路:

设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,有一个构造方法、一个普通实例方法disp()和一个静态方法avg()(用于输出当前人数和平均分)。

Java中的static变量、方法、代码块

1、static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。 2、static方法 静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联!这个需要去理解,想明白其中的道理,不是记忆!!! 因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。 3、static代码块 static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。 例子: class A{ static{ System.out.println("A static block"); // (3)运行 } { System.out.print("Q"); // (5)运行 } public A (){ System.out.println("x"); // (6)运行 } } class B extends A{ static{ System.out.println("B static block"); // (4)运行 } { System.out.print("W"); // (7)运行 }

C++函数名字的隐藏:重写、重载、重定义

概要: C++中经常出现函数名字一样,但参数列表或返回值不同的函数,要搞清楚函数的正确调用关系,需理清三个概念:重写(override)、重载(overload)、重定义(redefine)。 一、三个基本概念 1、重定义(redefine):派生类对基类的成员函数重新定义,即派生类定义了某个函数,该函数的名字与基类中的函数名字一样。 特点:(1)不在同一个作用域(分别位于基类、派生类)(2)函数的名字必须相同(3)对函数的返回值、形参列表无要求 特殊情况:若派生类定义的该函数与基类的成员函数完全一样(返回值、形参列表均相同),且基类的该函数为virtual,则属于派生类重写基类的虚函数。 作用效果:若重新定义了基类中的一个重载函数,则在派生类中,https://www.360docs.net/doc/9211501467.html,基类中该名字的函数(即其他所有重载版本)都被自动隐藏,包括同名的虚函数。 2、重载(overload):函数名字相同,但它的形参个数或者顺序,或者类型不同,但是不能靠返回类型来判断。 特点:(1)位于同一个类中(2)函数的名字必须相同(3)形参列表不同(可能是参数个数 or 类型 or 顺序不同),返回值无要求 特殊情况:若某一个重载版本的函数前面有virtual修饰,则表示它是虚函数。但它也是属于重载的一个版本 不同的构造函数(无参构造、有参构造、拷贝构造)是重载的应用 作用效果和原理:编译器根据函数不同的参数表,将函数体与函数调用进行早绑定。重载与多态无关,只是一种语言特性,与面向对象无关。 3、重写(override):派生类重定义基类的虚函数,即会覆盖基类的虚函 数(多态性) 特点:(1)不在同一个作用域(分别位于基类、派生类)(2)函数名、形参列表、返回值相同(3)基类的函数是virtual 特殊情况:若派生类重写的虚函数属于一个重载版本,则该重写的函数会隐藏基类中与虚函数同名的其他函数。

实验8--友元函数与运算符重载函数

实验十三 1.实验目的 通过本次实验 (1)理解友元函数与运算符重载函数的概念; (2)学会友元函数的定义与使用方法; (3)掌握运算符重载函数的定义与使用方法; 2.实验要求 (1)编写实验程序 (2)在VC++运行环境中,输入源程序 (3)编译运行源程序 (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。分别用成员函数与友元函数编写运算符重载函数。在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。 参考资料: (1)成员函数 # include class Complex { private: float Real,Image; public: Complex(float r=0,float i=0) { Real=r;Image=i;} void Show(int i) { cout<<"c"< class Complex { private: float Real,Image; public: Complex(float r=0,float i=0) { Real=r;Image=i;} void Show(int i) { cout<<"c"<

Java 中的 static 使用之静态方法

Java 中的static 使用之静态方法 与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如: 需要注意: 1、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如: 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如: 、在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:

3、静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如: ava 中的static 使用之静态初始化块 Java 中可以通过初始化块进行数据赋值。如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。 需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。 我们来看一段代码:

运行结果: 通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。 封装 1、概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 2、好处 a:只能通过规定的方法访问数据 b:隐藏类的实例细节,方便修改和实现。 什么是Java 中的内部类 问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。 问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下:

实验五 运算符重载

实验五运算符重载 【实验目的】 1.进一步了解运算符重载的概念和使用方法。 2.掌握几种常用的运算符重载的方法。 3.了解转换构造函数的使用方法。 4.了解在Visual C++6.0环境下进行运算符重载要注意的问题. 【实验要求】 1.硬件基本配置:Intel PentiumIII以上级别的CPU,大于64MB的内存。 2.软件要求:Window 2000操作系统,Visual Studio 6.0或更高版本开发环境。 3.实验学时:2学时 4.实现实验内容中的题目。 5.写实验报告 【实验内容】 (1)声明一个复数类Complex,重载运算符“+’’,“一”,“*”,“/”使之能用于复数的加、减、乘、除.运算符重载函数作为Complex类的成员函数,重载流提取运算符实现对复数的输出。编程序,分别求两个复数之和、差、积和商并用重载后的流运算符进行输出。 请思考:你编的程序能否用于一个整数与一个复数的算术运算?如4+ (5-2i). (2)声明一个复数类Complex,重载运算符“+“,使之能用于复数的加法运算。 参加运算的两个运算量可以都是类对象.也可以其中有一个是整数,顺序任意。例如, cl+c2, i+cl,cl+i均合法(设i为整数,c1, c2为复数)。 运行程序.分别求两个复数之和、整数和复数之和。 (3)有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如c=a+b。重载流提取运算符实现对矩阵的输出如:cout<

C#中区别多态、重载、重写的概念和语法结构

重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。 格式: 基类中: public virtual void myMethod() { } 子类中: public override void myMethod() { } 重写以后,用基类对象和子类对象访问myMethod()方法,结果都是访问在子类中重新定义的方法,基类的方法相当于被覆盖掉了。 重载 用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。 public void test(int x,int y){} public void test(int x,ref int y){} public void test(int x,int y,string a){} 重载特征: I.方法名必须相同 II.参数列表必须不相同,与参数列表的顺序无关 III.返回值类型可以不相同 ========================= 但如果有泛型,就要注意了! 多态 c#的多态性主要体现在类的继承上: 子类继承父类的时候,可能出现同名但方法定义不同的情况, 所以在子类中会将原方法覆盖,实现自身的要求. using System; class Employee { virtual public void CalculatePlay() { Console.WriteLine("Employee");

} }; class SalariedEmployee: Employee { override public void CalculatePlay() { Console.WriteLine("Salary"); } }; class PolyApp { public static void Main() { Employee baseE1 = new Employee(); baseE1.CalculatePlay(); Employee baseE2 = new SalariedEmployee(); baseE2.CalculatePlay(); SalariedEmployee s = new SalariedEmployee(); s.CalculatePlay();

实验十_运算符重载

实验十运算符重载1.实验目的及要求 1)掌握运算符重载的基本概念和方法。 2)熟习几种特殊的运算符的重载。 2.实验内容 1.分析下面的程序,指出程序运行的结果: 1) #include class point{ int x,y; public: point(int vx,int vy){ x=vx; y=vy;} point(){x=0,y=0;} point operator+(point p1) { int px=x+p1.x; int py=y+p1.y; return point(px,py); } point operator-(point p1) { point p; int px=x-p1.x; int py=y-p1.y; return point(px,py); } void print(){cout<

运行结果为: 30,30 Press any key to continue 2)分析下面程序,指出程序运行的结果: #include static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31}; class date { int mo,da,yr; public: date(int m,int d,int y){mo=m;da=d;yr=y;} date(){} void disp() {cout<dys[dt.mo-1]) {day-=dys[dt.mo-1];//cout<

复习重点

Java中布尔类型的常量有两种,它们是(true)和(false)。 Java中用于定义小数的关键字有两个:(float)和(double),后者精度高于前者。 在Java中定义一个字符串类型的变量str的语句是:(String str),定义一个具有10个元素的整型数组a的语句是:(int[] arr=new int[10]; 。 当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是(int),数组名是(arr),数组的大小为(5),数组元素下标的使用范围是(0-4). 异常处理是由(try)、(catch)和finally块三个关键所组成的程序块。 假设x=13,y=4,则表达式x%y != 0的值是(true),其数据类型是(boolean)。 下面程序段的执行结果是(6 5 4 3 2) int a[] = { 2, 3, 4, 5, 6 }; for (int i = a.length - 1; i >= 0; i--) System.out.print(a[i] + ""); 导入mypackage包中的所类的命令是(import mypackage.*;)。 如果将类MyClass声明为public,它的文件名称必须是(MyClass.java)才能正常编译。 Java中用于两个数相等比较的运算符是:(==),用于不相等比较的运算符是(< >)。 下列哪一个import命令可以使我们在程序中创建输入/输出流对象(import java.io.*;). 定义一个接口必须使用的关键字是(interface ). 分析选项中关于Java中this关键字的说法正确的是(this关键字是在对象内部指代自身的引用). Java中,如果类C是类B的子类,类B是类A的子类,那么下面描述正确的是(C不仅继承了B中的成员,同样也继承了A中的成员). 在Java语言中,下列关于类的继承的描述,正确的是(一个类可以具有多个子类)。 在JA V A中,以下(java.util.HashMap)类的对象以键-值的方式存储对象. 在Java中,关于构造方法,下列说法错误的是(构造方法不可以重载).

java重写与方法重载实例

package basetest; /** * * @author Administrator *案例分析:对于main最后一行代码有两个坑 *1.调用的是Test类的哪一个方法? *这一步看重载 *2.对于传递的参数(son),方法体重调用的是谁的方法 *这一步看重写调用的是子类的方法 * * */ public class OverrideDemo { public static void main(String[] args) { Father father = new Son(); father.show();//运行期绑定:重写看对象(new的是谁调谁的方法) Test test = new Test(); test.test(father);//编译器绑定:重载看引用(等号前的类型是谁调谁的方法)} } class Test {

void test(Father father){ System.out.println("父型参数"); father.show(); } void test(Son son){ System.out.println("子型参数"); son.show(); } } class Father { protected void show(){ System.out.println("我是老子!"); } } class Son extends Father{ /** * Cannot reduce the visibility of the inherited method from Father 不能减少来自继承方法的可见性 子类访问权限要大于父类 */ /* void show(){ }*/ public void show(){ System.out.println("我是儿子!"); } public void show(String name){ System.out.println("我是儿子:名字是"+name); } }

实验5-运算符重载、继承 ( 1 )

实验五运算符重载、继承 ●实验目的 1、了解类的两种使用方式。 2、学习从现有类派生出新类的方式。 3、了解在派生类中如何使用基类的成员。 4、了解基类成员在派生类中的访问控制。 5、掌握运算符重载的方法。 ●实验内容 1、从类Person中派生出一个教师类,新增的属性有专业(Specialty)、职称(Position)和主讲课程(MajorCourse,一门),并为这些属性定义相应的方法。 [实现要求] Person类的设计如下,请将空白处补充完整。 class Person { string Name; int Age; string Sex; public: void Register(char *name,int age,char *sex) { ; Age=age; Sex=sex; } string GetName() { } string GetSex() { return Sex; } int GetAge() { } void ShowMe() { cout<

//带参数的构造函数去初始化各个成员的值,使其显示运行结果的第一行t.TeacherRegister("张三",40, "f","计算机","副教授","C++"); t.ShowMe(); return 0; } 运行结果如下: XXX m 0 XXX XXX XXX 张三 f 40 计算机副教授C++ [思考问题] ①在Teacher类中是否要需要重新定义ShowMe成员函数?不重新定义ShowMe成员函数能否得到上述要求的运行结果?为什么? 2、从Point类中派生出一个Line类。Line类增加一个数据成员EndPoint,计算线的长度。 [实现提示] Point类可以按下面方式进行设计: class Point{ int x,y; public: Point(int a=0,int b=0){SetPoint(a,b);} void SetPoint(int a,int b); //设置点的坐标值 int GetX(){return x;} int GetY(){return y;} void Print(); //显示点的坐标值 }; Line类增加一个数据成员EndPoint为Point类对象,注意在设计Line类的构造函数时应为其基类和对象成员EndPoint提供形参。 为了检验Line类的功能,主函数按如下方式设计: int main(){ Line line(1,1,10,10); cout<<"Line line:"; line.Print(); cout<<"\n线line的长度:"; cout<

Java中的静态变量_静态方法_静态块与静态类

Java中的静态变量、静态方法、静态块与静态类 在Java中,static是一个关键字,我们不能用它来作为类名或包名,static主要有四种用途,即作为静态变量、静态方法、静态块和静态类。 1、静态变量Java static variables 静态变量就是类变量,它并不属于类的实例,仅属于类本身。在所有能访问该类的地方,也就可能访问或修改该变量,它是非线程安全的,因此,静态变量通常是和final关键字结合在一起,用来标识该变量是一个公共资源和常量。 只要静态变量不是private私有的,那么我们可通过ClassName.variableName的方式进行访问。 2、静态方法Java static methods 静态方法与静态变量一样,也是属于类本身而不属于类的实例对象。在一个静态方法中,除了局部变量外,它能访问的外部变量也必须是静态的,能访问的外部方法也必须是静态的,实例变量和实例方法均不能访问。

3、静态块Java static Block 静态块是由一些语句组成的段落,它在类被加载进内存时执行,且无论类被使用多少次它都只会执行一次。一个类的静态块可以有多个,其执行顺序由它在代码中的顺序决定。 4、静态类Java static methods 静态类都是内部类,static不能用于修饰顶级的类。对于单例模式用静态类来实现就是一个很不错的选择。 5、完整示例

//static variable example private static int count; //kept private to control it's value through setter public static String str; public int getCount() { return count; } //static method example public static void setCount(int count) { if(count > 0) StaticExample.count = count; } //static util method public static int addInts(int i, int...js){ int sum=i; for(int x : js) sum+=x; return sum; } //static class example - used for packaging convenience only public static class MyStaticClass{ public int count; } }

C++ 重写重载重定义区别

C++ 重写重载重定义区别 1 Overload:是函数名相同,参数列表不同.重载只是在类的内部存在。但是不能靠返回类型来判断。 成员函数重载特征: a 相同的范围(在同一个类中) b 函数名字相同 c 参数类型、个数不同 d virtual关键字可有可无 2 Override:也叫做覆盖。重写(覆盖)是指派生类函数覆盖基类函数。子类重新定义了父类中有相同名称和参数的虚函数。函数特征相同。但是具体实现不同,主要是在继承关系中出现的。 特征是: a 不同的范围,函数分别位于基类和派生类中 b 函数的名字相同 c 参数相同 d 基类函数必须有virtual关键字(多态) 重写需要注意: 1 被重写的函数不能是static的。必须是virtual的 2 重写函数必须有相同的类型,名称和参数列表 3 重写函数的访问修饰符可以不同。尽管virtual是private的,派生类中重 写改写为public,protected也是可以的 3重定义(redefining)也叫做隐藏: 子类重新定义父类中有相同名称的非虚函数( 参数列表可以不同) 。 如果一个类,存在和父类相同的函数,那么,这个类将会覆盖其父类的方法,除非你在调用的时候,强制转换为父类类型,否则试图对子类和父类做类似重载的调用是不能成功的。 重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则如下: a 如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。 b 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏。 综上所述,总结如下: 1 成员函数重载特征: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同 d virtual关键字可有可无 2 重写(覆盖)是指派生类函数覆盖基类函数,特征是: a 不同的范围,分别位于基类和派生类中 b 函数的名字相同 c 参数相同 d 基类函数必须有virtual关键字

实验十六运算符重载解读

实验十六运算符重载 一、实验目的 1、理解运算符重载作用和意义; 2、掌握类运算符和友元运算符重载的定义和使用; 3、掌握常用运算符(++、--、+、-、*、/、=、+=、-=、*=、/=、<<(插入)、>>(提取))的重载。 二、实验内容 1、下列程序定义了一个复数类,重载"+"运算符以实现复数的加法运算。 #include class Complex{ float Real,Image; //复数的实部和虚部 public: Complex(float r=0,float i=0) //初始化对象 { Real=r,Image=i; } float& AccessR() //存取实部 { return Real; } float& AccessI() //存取虚部 { return Image; } void Show() //显示复数 { cout<=0) cout<<"\t+"; else cout<<"\t"; cout<

CALM准静态分析方法

CALM准静态分析方法 针对CALM系统,初步设计时可以采用准静态分析方法。这样做的优点是:概念清晰、耗费计算资源少,方案更改快捷。 计算的目的: 得出浮筒的最大偏移以及锚链的最大受力。 准静态方法的含义和基本流程: 1、首先将风力、流力和平均波浪漂移力作为静力考虑,然后,把产生的 振荡波浪力分量与上述静力分别考虑,静力的作用使浮体产生平均位 振荡波浪力的作用使物体产生振荡位移S motion。 移S mean , 2、系泊系统的刚度特性根据公认的理论,例如,悬链线理论来确定。 3、锚泊或系泊的物体在外力作用下产生位移,当外力与系统的回复力相 等时,物体处于新的平衡位置,把新平衡位置与初始平衡位置之间的 距离称为平均位移S mean。 4、波浪力的振荡分量,使物体围绕新的平衡位置,以振幅S motion进行振 荡。 5、物体的总位移St为平均位移S mean和振荡运动S motion的和。即 St=S mean+S motion 6、根据系泊系统的刚度特性曲线和物体的总位移得出系泊力。 整个系统可以简化为双质量双弹簧系统。由于浮筒所产生的风、流面积和水

线面面积都远小于油轮,而且贴近海面的风速较小,因此相对于油轮的载荷来说,浮筒上的环境载荷可以忽略不计。(油轮固有周期长,浮筒固有周期短,因而在振荡波浪力的作用下,油轮以低频运动为主,浮筒以波频运动为主,在本次准静态做法当中,浮筒上的振荡波浪力是不应忽略的,该结论是在后期aqwa时域计算中发现的问题) 【一】【载荷的确定】 首先将风力、流力和平均波浪漂移力作为静力考虑。 载荷与船的夹角θ取0°—5°—10°,取其中大值进行静态载荷的计算。从而确定载荷信息。后来依照DNV-OS-E301规定,选择了共线和不共线两种。 图1风浪流共线 图2风浪流不共线初始状态 图3风浪流不共线平衡状态

实验4 类的继承和多态机制

实验4 类的继承和多态机制 一、实验目的 1、掌握类的继承机制; 2、掌握子类对父类构造方法的调用; 3、掌握方法覆盖和方法重载的区别。 二、实验内容 1、定义点类Point、圆类Circle、圆柱体类Cylinder。实现继承关系。 2、定义交通工具类Vehicle,一个小车类Car。实现Car对Vehicle的继承。 三、实验步骤 1、定义点类Point、圆类Circle、圆柱体类Cylinder。实现继承关系。 设计一个表示二维平面上点的类Point,包括表示坐标位置的成员变量x和y,获取和设置x和y值的方法。 设计一个表示二维平面上圆的类Circle,它继承自类Point,还包括表示圆半径的成员变量r、获取和设置r值的方法、计算圆面积的方法。 设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包括表示圆柱体高的成员h、获取和设置h的方法、计算圆柱体表面积的方法、计算圆柱体体积的方法。 建立若干个Cylinder对象,输出其轴心位置坐标、半径、高、表面积及其体积的值。 class Point{ int x; int y; ;public Point(int x,int y){ this.x =x; this.y=y; } public int getX(){ return x; } public int getY(){ return y; } } class Circle extends Point{ double r; final double PI=3.1416; public Circle(int x,int y,double m){ super(x,y); r=m; } public double getR(){ return r; } public double circlearea(){ return PI*r*r;

C#静态方法与非静态方法的比较

C#的类中可以包含两种方法:C#静态方法与非静态方法。那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法。 下面我们分四个方面来看看C#静态方法与非静态方法的差异: C#静态方法与非静态方法比较一、C#静态成员: ①静态成员属于类所有,非静态成员属于类的实例所有。 ②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储; 非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例, 类的静态成员在内存中只占同一块区域。 C#静态方法与非静态方法比较二、C#静态方法 1、C#静态方法属于类所有,类实例化前即可使用。 2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。 3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存, 这样,C#静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用。而静态变量的地址对类来说是固定的,故可以使用。 C#静态方法与非静态方法比较三、C#静态方法是一种特殊的成员方法 它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式。 1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用! static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它 是属于整个类! 2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。 3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存. 4.C#中的方法有两种:实例方法,静态方法. C#静态方法与非静态方法比较四、C#静态方法中获取类的名称 静态方法中用: 1.string className = 2.System.Reflection.MethodBase. 3.GetCurrentMethod().ReflectedType.FullName; 非静态方法中还可以用: 1.string className = this.GetType().FullName; C#静态方法与非静态方法的区别解析旨在诠释C#静态方法的含义

继承、多态,重载、重写的区别与总结

继承、多态,重载、重写的区别与总结 李氏原则: (1)父类的引用指向子类对象。 -多态 (2)接口的引用指向实现类的实例。-接口 Polo咯, 什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承、多态、重载和重写 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型。继承是面向对象的三个基本特征--封装、继承、多态的其中之一,我们在使用JAVA 时编写的每一个类都是在继承,因为在JAVA语言中,https://www.360docs.net/doc/9211501467.html,ng.Object类是所有类最根本的基类(或者叫父类、超类),如果我们新定义的一个类没有明确地指定继承自哪个基类,那么JAVA就会默认为它是继承自Object类的。 我们可以把JAVA中的类分为以下三种: 类:使用class定义且不含有抽象方法的类。 抽象类:使用abstract class定义的类,它可以含有,也可以不含有抽象方法。接口:使用interface定义的类。 在这三种类型之间存在下面的继承规律: 类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。 抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。 接口只能继承(extends)接口。 请注意上面三条规律中每种继承情况下使用的不同的关键字extends和implements,它们是不可以随意替换的。大家知道,一个普通类继承一个接口后,必须实现这个接口中定义的所有方法,否则就只能被定义为抽象类。我在这里之所以没有对implements关键字使用“实现”这种说法是因为从概念上来说它也是表示一种继承关系,而且对于抽象类implements接口的情况下,它并不是一定要实现这个接口定义的任何方法,因此使用继承的说法更为合理一些。 以上三条规律同时遵守下面这些约束: 类和抽象类都只能最多继承一个类,或者最多继承一个抽象类,并且这两种情况是互斥的,也就是说它们要么继承一个类,要么继承一个抽象类。 类、抽象类和接口在继承接口时,不受数量的约束,理论上可以继承无限多个接

实验5 运算符重载

实验5 运算符重载 1.实验目的 通过本次实验 (1)理解运算符重载函数的概念; (2)掌握运算符重载函数的定义与使用方法; 2.实验要求 (1)编写实验程序 (2)在运行环境中,输入源程序 (3)编译运行源程序 (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。分别用成员函数与友元函数编写运算符重载函数。在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。 (2)定义一个数组类Array,其私有数据成员为整型一维数组a[10]。通过构造函数给a[10]赋初值。用Show函数显示a[10]的元素值。用成员函数重载运算符“+”,直接实现两个一维数组对应元素相加的运算。在主函数中定义数组a、b分别为: int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[10]={4,5,6,7,8,9,10,11,12,13}; 用Array定义三个数组对象arr1(a)、arr2(b)、arr3,执行arr3=arr1+arr2运算,输出arr3的数组元素值。 (3)定义一个人民币类Money,类中数据成员为元、角、分。用成员函数与友元函数重载“――”运算符,实现人民币对象的减1运算。在主函数中定义人民币对象m1=10元8角5分及对象m2、m3。对m1作前置“――”并赋给m2。对m1作后置“――”并赋给m3。显示m1、m2、m3的结果。 (4)定义描述字符串的类String,编写字符串运算符“+=”的重载函数,使运算符“+=”用于两个字符串联接操作,即用str1+=str2实现字符串函数strcat(str1,str2)的操作功能。要求分别用成员函数与友元函数编写运算符重载函数。在主函数中定义字符串对象s1("software and ")与s2("hardware"),进行s1+=s2的字符串联接,并输出s1、s2的值。

静态分析比较静态分析和动态分析

静态分析、比较静态分析和动态分析 经济模型可以被区分为静态模型和动态模型。从分析方法上讲,与静态模型相联系的有静态分析方法和比较静态分析方法,与动态模型相联系的是动态分析方法。 1.静态分析与静态经济学 静态分析法分析经济现象达到均衡时的状态和均衡条件,而不考虑经济现象达到均衡状态的过程。应用静态分析方法的经济学称为静态经济学。 2.比较静态分析 比较静态分析法考察经济现象在初始均衡状态下,因经济变量发生变化以后达到新的均衡状态时的状况。考察的重点是两种均衡状况的比较,而不是达到新均衡的过程。 3.动态分析与动态经济学 动态分析:在假定生产技术、要素禀赋、消费者偏她等因素随时间发生变化的情况下,考察经济活动的发展变化过程。应用动态分析方法的经济学称为动态经济学。 大致说来,在静态模型中,变量所属的时间被抽象掉了,全部变量没有时间先后的差别。因此,在静态分析和比较静态分析中,变量的调整时间被假设为零。例如,在前面的均衡价格决定模型中,所有的外生变量和内生变量都属于同一个时期,或者说,都适用于任何时期。而且,在分析由外生变量变化所引起的内生变量的变化过程中,也假定这种变量的调整时间为零。而在动态模型中,则需要区分变量在时间上的先后差别,研究不同时点上的变量之间的相互关系。根据这种动态模型作出的分析是动态分析。蛛网模型将提供一个动态模型的例子。 由于西方经济学的研究目的往往在于寻找均衡状态,所以,也可以从研究均衡状态的角度来区别和理解静态分析、比较静态分析和动态分析这三种分析方法。所谓静态分析,它是考察在既定的条件下某—经济事物在经济变量的相互作用下所实现的均衡状态。所谓比较静态分析,它是考察当原有的条件或外生变量发生变化时,原有的均衡状态会发生什么变化,并分析比较新旧均衡状态。所谓动态分析,是在引进时间变化序列的基础上,研究不同时点上的变量的相互作用在均衡状态的形成和变化过程中所起的作用,考察在时间变化过程中的均衡状态的实际变化过程。

教你制作静态网页的方法

教你制作静态网页的方法 一、网页设计基础 1、熟悉Dreamweaver 8的工作环境 2、创建新站点 创建本地站点:站点----管理站点----新建----站点(前三步也可直接从“新建站点”进入下面的设置向导对话框)----跟随向导设置直至完成 3、网页文件的基本操作 a、创建、打开和保存网页文件 创建:文件----新建----创建 打开:文件---打开----选择欲打开的文件 或者在右边的文件浮动面版中选择打开 保存:文件---保存或另存为 b. 设置网页的页面属性 修改---页面属性---然后设置(标题、背景、背景图像、文本等) c. 设置网页对象的颜色 网页对象,如页面背景、文字、链接都经常需要设置颜色。 可在各自对应的属性面版中设置。 d. 网页文本的输入和属性设置 文本可键入、导入、粘帖 文字可设置字体、大小、颜色、格式等。 键入空格的方法:1、汉字输入法设置为全角方式,按空格键即可输入。2、属性面版格式中:预先格式化的 换行:ENTER、SHIFT+ENTER 实例练习: 1、输入以下文字 书签夹在诗集里, 落叶夹在深秋里。 喜悦夹在生活里, 追求夹在人生里。 2、第一次设置格式为“无”,字体为“华文行楷”,字体颜色为“红色”,字号为“5号”,添加项目符号。然后保存、预览。 3、第二次设置格式为“标题一”,字体为“楷体”,字体颜色为“蓝色”,字号为“5号”,添加项

目符号,对齐方式为“居中”。然后保存、预览。 比较两次设置的效果。 e. 网页图片的插入和属性设置 插入图片,在对话框中选择图片。(最好在建立站点时将欲用的图片素材复制到本地站点目录中) 插入图像占位符,在图片准备好后再加入图片。加入方法:1、双击图像占位符;2、点“属性面版”中的“指向文件”,拖到右边文件中要插入的文件处。 在图像属性面版中设置 f. 插入层 方法: 1、点击插入面版中的“描绘层”;2、在网页编辑器窗口中按住鼠标左键拖画出定位用的层; 3、可以随意移动层的位置; 4、可在层中插入图像、文字等。 g. *插入表格,用表格定位 方法: 1、先用鼠标点至欲插入表格的位置; 2、点插入面版中的“表格”—“插入表格”; 3、确定行数、列数后确定即将表格插入到选定位置了; 4、可在表格中任何单元格里插入图像、文字等。 h. 建立超链接 方法: 1、选中要建立超链接的文字或图像; 2、点右键“创建链接”打开的窗口或在属性的链接栏里,填入链接的目标。(如:本网站另一个网页,或外部网页如https://www.360docs.net/doc/9211501467.html,,或电子邮件如:mailto:zdhwangji@https://www.360docs.net/doc/9211501467.html,) 3、在页面属性里修改链接的属性:修改--页面属性(链接、活动链接、访问过链接) 二、制作实例1

相关文档
最新文档