类与对象(下)

C++类与对象上 / 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体注意类定义结束时后面分号不能省略类体中内容称为类的成员:类中的变量称为类的属性或成员变量,类中的函数称为类的方法或者成员函数1.声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理2.类声明放在.h文件中,成员函数定义放在.cpp文件中,注:成员函数名前需要加类名::一般情况下,更期望采用第二种方式。 阅读详情

目录

一.构造函数的补充

初始化列表的注意事项: 

总结:

二.类型转换

 三.Static成员

四.友元(friend) 

五.内部类

六.匿名对象


 

一.构造函数的补充

在上一篇文章类与对象(中)中我们就初次认识了构造函数,但是那篇文章中我们只学了百分之七十左右的内容,在这边文章中我们将对它进行完善。在那篇文章中是不是没看懂为什么对于自定义类型(类,结构体,Union等关键字自己定义的类型),如果这个成员没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要用初始化列表才能解决。那么初始化列表是什么呢?

之前学习构造函数的时候,初始化成员都是在函数体里赋值的,但他还有另一种方式——利用初始化列表。初始化列表的使用形式是以一个冒号开始,接着是以一个逗号分隔的数据成员列表,每个“成员变量”后面都跟一个放在括号里面的初始值或表达式。

初始化列表的注意事项: 

1.每个成员变量在初始化列表只能出现一次,初始化列表也可以认为是每个成员变量定义初始化的地方。

class Data
{
public:
	Data(int year = 1, int month = 1, int day = 1)
		:_year(year)
		, _month(month)
		, _day(day)
	{

	}
//也可为
  /*Data()
		:_year(1)
		,_month(1)
		,_day(1)
	{

	}*/
	void Print()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Data d1;
	d1.Print();
	return 0;
}

2.引用成员变量、const成员变量、没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则编译器会报错。

class Time
{
public:
	Time(int hour)
		:_hour(hour)
	{
//如果调用了Time的实例化对象的默认默认构造函数将会打印Time()
		cout << "Time()" << endl;
	}
private:
	int _hour;

};
class Data
{
public:
	Data(int &x,int year = 1, int month = 1, int day = 1)
		:_year(year)
		, _month(month)
		, _day(day)
	    ,_t(12)
		,_ref(x)
		,_n(1)
	{

	}
	void Print()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
	Time _t;//无默认构造函数(不需要传参的)
	int& _ref;//引用必须初始化
	const int _n;//const把变量变成常变量
};
//若不在初始化列表初始化
//错误	C2512	“Time” : 没有合适的默认构造函数可用
//错误	C2530	“Data::_ref”: 必须初始化引用
//错误	C2789	“Data::_n”: 必须初始化常量限定类型的对象
int main()
{
	int i = 0;
	Data d1(i);
	d1.Print();
	return 0;
}

3.C++11支持在成员变量声明给缺省值,主要是给没有显式在初始化列表初始化的成员用的。

猜猜下面下面代码中用构造函数1的结果是什么?用构造函数2的结果又是什么?


class Data
{
public:
   //1.
	Data()
	{

	}
  //2.
/*Data()
		:_year(2)
		,_month(3)
		,_day(4)
	{

	}*/
	void Print()
	{
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
//成员声明
	int _year = 1;
	int _month = 2;
	int _day = 3;
};
int main()
{
	Data d1;
	d1.Print();
	return 0;
}

答案就是1:  1/2/3    2:   2/3/4

当成员在声明位置给了缺省值,但没有显式的在初始化列表初始化,那么初始化列表会用这个缺省值初始化,如果没有给缺省值,也没有显式的在初始化列表初始化,那么内置类型成员是否初始化取决于编译器,而自定义类型成员如果没有默认构造函数,编译会错误。

4.初始化列表中按照成员变量在类中的声明顺序进行初始化,和成员在初始化列表中出现的先后顺序无关。建议声明顺序和初始化列表顺序保持一致。

考察一下: 

class A
{
public:
	A(int a)
		:_a1(a)
		, _a2(_a1)
	{}
	void Print() {
		cout << _a1 << " " << _a2 << endl;
	}
private:
	int _a2 = 2;
	int _a1 = 2;
};
int main()
{
	A aa(1);
	aa.Print();
}

程序的运行成果是:输出  1   随机值 

程序先给_a2初始化,但_a1还没初始化,_a1在vs中为随机值,_a1初始化为a,a=1,所以_a1初始化为1。

总结:

无论是否写初始化列表,每个构造函数都存在初始化列表。

无论是否在初始化列表显示初始化(还没开空间),每个成员变量都要走初始化列表。

二.类型转换

1.C++支持内置类型隐式类型转换为类类型对象,需要有相关内置类型为参数的构造函数。

2.构造函数前面加explicit就可以不再支持隐式类型转换。

​//首先我们先了解隐式类型转换
//short a='s';//'s'是char类型被转换成了short类型
//int j=0;
//double d=j;//j变量是int类型的转变成了double类型
class A
{
public:
	// 构造函数explicit就不再⽀持隐式类型转换
	// explicit A(int a1)
	A(int a1)
		:_a1(a1)
	{}
	//explicit A(int a1, int a2)
	A(int a1, int a2)
		:_a1(a1)
		, _a2(a2)
	{}
	void Print()
	{
		cout << _a1 << " " << _a2 << endl;
	}
		int Get() const
	{
		return _a1 + _a2;
	}
private:
	int _a1 = 1;
	int _a2 = 2;
};
​int main()
{
	// 1构造⼀个A的临时对象,再⽤这个临时对象拷⻉构造aa1
	// 编译器遇到连续构造+拷⻉构造->优化为直接构造
	A aa1 = 1;
	aa1.Print();
	const A& aa2 = 1;
	// C++11之后才⽀持多参数转化
	A aa3 = { 2,2 };
    return 0;
}

内置类型转变成类类型也是一样的,只是编译器会直接优化,就不再需要临时变量,也就没有不需要在调用拷贝构造了,直接进行构造函数。 

3.类类型的对象之间也可以隐式转换,需要相应的构造函数的支持。

class A
{
public:
	A(int a1)
		:_a1(a1)
	{}
	A(int a1, int a2)
		:_a1(a1)
		, _a2(a2)
	{}
	void Print()
	{
		cout << _a1 << " " << _a2 << endl;
	}
		int Get() const
	{
		return _a1 + _a2;
	}
private:
	int _a1 = 1;
	int _a2 = 2;
};
class B
{
public:
	B(const A& a)
		:_b(a.Get())
	{}
private:
	int _b = 0;
};
int main()
{
	A aa3 = { 2,2 };
	// aa3隐式类型转换为b对象
	// 原理跟上⾯类似
	B b = aa3;
	const B& rb = aa3;把A类类型转变成常引用
	return 0;
}

 三.Static成员

在C语言的时候我们知道static修饰的变量或函数会失去外部链接属性,它的作用在C++中也适用。

1.用static修饰的成员变量,称之为静态成员变量,静态成员变量一定要在类外进行初始化(类中的构造函数无法初始化静态变量)。即类里面声明,类外面初始化但要指定类域。

2.用static修饰的变量为所有类对象所共有,不属于某个具体的对象,不存在对象中,存放在静态区。⾮静态的成员函数,可以访问任意的静态成员变量和静态成员函数。

3.静态成员函数没有this指针。

4.突破类域就可以访问静态成员,可以通过类名::静态成员或者对象.静态成员来访问静态成员变量和静态成员函数(初始化时)。

5.静态成员也受public、protected、private访问限定符的限制。

6.静态成员变量不能在声明位置给缺省值初始化,因为缺省值是个构造函数构造初始化列表的,静态成员不属于某个对象,所以不走初始化列表。

class C
{
public :
	C()
	{
		_a++;
	}
	C(const C& c)
	{
		_a++;
	}
	~C()
	{
		_a--;
	}
	static int get()//没有this指针
	{
		return _a;
	}
private:
//类内声明
	static int _a;//不能给缺省值,不走初始化列表
};
//类外初始化
int C::_a = 0;
int main()
{
	cout << C::get() << endl;
	C c1;
	C c2;
	C c3(c2);
	cout << C::get() << endl;//cout<<c3.get()<<endl;
}

猜猜输出了什么?

输出了0 3,这里也说明了staic修饰的变量只初始化一次。

那static修饰的类什么时候调用析构和构造呢?

判断一下代码A,B,C,D类的实例化对象析构和构造顺序:

C c;
int main()
{
A a;
B b;
static D d;
return 0;
}

析构顺序:B     A      D     C(main函数中局部(先构造的后析构)先析构再析构static类(程序退出时才析构)再全局)

构造顺序:C     A     B      D  (main函数之前全局变量已经构造好了main函数里的变量就顺着构造)  

四.友元(friend) 

再上一篇文章类与对象(中)的输出(<<),输入(>>)重载时,它们不能放在类里面定义它的运算符重载的函数,而是要放在全局变量中去定义,当我们在全局定义的时候需要访问类中的成员变量,但是成员变量受类访问限定符限制,我们就用到了友元在类中声明函数。

但它还有很多注意事项:

1.友元是一种突破类访问限定符封装的方式,友元分为友元函数和友元类,在函数声明或者类声明的前面加friend,并且把友元声明放在一个类里面。

2.在外部定义的友元函数并不是类的成员函数。

3.友元函数可以在类中的任意地方声明,一般习惯在public之前,不受类访问限定符限制。

4.一个函数可以有多个类的友元函数。

class B;//重点,class A在classB之前,要先声明classBB
class A
{
	friend void func(const A& _a, const B& _b);
public:
	A()
		:a(3)
	{

	}
private:
	int a;
};
class B
{
	friend void func(const A& _a, const B& _b);
public:
	B()
		:b(2)
	{

	}
private:
	int b;
};
void func(const A& _a, const B& _b)//class A和class B的友元函数
{
	cout << _a.a << " " << _b.b;
}
int main()
{
	A a;
	B b;
	func(a,b);
	return 0;
}

5.友元类中的成员函数都可以是另一个类的友元函数,可以访问另一个类中的私有和保护成员。

class B;
class A
{
public:
	A()
		:a(3)
	{

	}
	void func(const B& b);//声明但func函数是A类的成员函数
private:
	int a;
};
class B
{
	friend void A::func(const B& _b);//友元函数声明
public:
	B()
		:b(2)
	{

	}
private:
	int b;
};  
void A::func(const B& _b)//A类中的成员函数是B类的友元函数
{
	cout << _b.b << endl;
}
int main()
{
	A a;
	B b;
	a.func(b);
	return 0;
}

6.友元类的关系是单向的,不具有交换性,即A类是B类的友元,但是B类不是A类的友元。也没有传递性,如果A是B的友元,B是C的友元,但不代表A是C的友元。

class B;
class A
{
public:
	A()
		:a(3)
	{

	}
	friend class B;
private:
	int a;
};
class B
{
public:
	int& func(A& _a)
	{
		return _a.a;
	}
	B()
		:b(2)
	{

	}
private:
	int b;
};  
int main()
{
	A a;
	B b;
	cout << b.func(a) << endl;
	return 0;
}

在A类中声明了B是A的友元,那么B类就可以访问A类中的私有和保护成员。 

五.内部类

1.一个类定义在另一个类的内部,这个内部的类就是内部类。内部类是一个独立的类,跟定义在全局的相比,它只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包括内部类。即计算一个类的空间大小时内部类的空间不计算在内。

class A
{
public:
	A()
	{

	}
	class B
	{
	public:
		B()
		{

		}
	private:
		int b;
	};
private:
	int a;
};
int main()
{
	A a1;
	int ret = sizeof(a1);
	cout << ret << endl;
	return 0;
}

2.内部类默认是外部类的友元类。

class A
{
public:
	A()
	:a(5)
	,c(2)
	{

	}
	class B
	{
	public:
		B(const A&a)//B可以访问A的私有的成员变量,B是A的友元
        :b(2)
		{
			b = a.a;
		}
		void print()
		{
			cout << b << endl;A
		}
	private:
		int b;
	};
private:
	int a=5;
	int c;
};
int main()
{
	A a1;
	A::B b1(a1);
	b1.print();
	return 0;
}

3.内部类本质上也是一种封装,当A类跟B类紧密关联时,A类实现出来主要就是给B使用的,那么可以考虑把A设计成B的内部类,如果放在private/protected位置,那么A类就是B类的专属内部类,其他地方都用不了。

求1+2+3+......+n

思路:实例化n个对象,调用构造函数的时候在构造函数中进行相加。

class Sum
{
public:
Sum()
{
    sum+=ref;
    ref++;
}
static int GetRet()
{
    return sum;
}
private:
static int sum;
static int ref;
};
int Sum::sum=0;
int Sum::ref=1;
class Solution {
public:
    int Sum_Solution(int n) {
        Sum arr[n];//变长数组在VS中不能用
        return Sum::GetRet();
    }
};

在这段代码中我们可以看到Sum类和Solution类紧密相关,所以我们可以把sum类设置为Solution类的内部类。

class Solution {
private://设计Sum为Solution的内部类,并把它放在Solution类的私有里,Sum类变成Solution类的专属类。
    class Sum
{
public:
Sum()
{
    sum+=ref;
    ref++;
}
static int GetRet()
{
    return sum;
}
private:
static int sum;
static int ref;
};
public:
    int Sum_Solution(int n) {
        Sum arr[n];
        return Sum::GetRet();
    }
};
int Solution::Sum::sum=0;
int Solution::Sum::ref=1;

六.匿名对象

 1.用类型(实参)定义出来的对象就是匿名对象(没有名字)。

2.匿名对象的生命周期只在当前一行,一般临时定义个对象当前用一下即可,就可以定义匿名对象。

class A
{
public:
	A(int a = 2)
		:a(3)
	{
		cout << "A()" << endl;
	}
	~A()
	{
		cout << "~A()" << endl;
	}
private:
	int a;
};
int main()
{
	//编译器不会报错,但是不建议这么用,编译器会分不清是函数的声明,还是aa1的初始化
	//A aa1();
	A();//匿名对象
	A(1);//匿名对象

 

AFSim插件开发实战:从环境搭建到功能扩展 本文详细介绍了AFSim插件开发的完整流程,从环境搭建到功能扩展,涵盖了SDK配置、插件创建、核心代码解析、功能扩展实战、调试优化以及高级开发技巧。通过实战案例和实用技巧,帮助开发者快速掌握AFSim插件开发,提升仿真系统的扩展性和灵活性。 阅读详情

相关推荐

手把手搭建摄像头驱动(一):I2C设备树插件与OV5640实战

本文手把手指导如何搭建OV5640摄像头驱动,重点讲解I2C设备树插件的编写与实战应用。通过硬件连接验证、I2C驱动框架搭建、设备树插件编译及动态加载调试,系统介绍Linux驱动开发全流程,并提供常见问题解决方案,帮助开发者快速掌握摄像头驱动开发技术。

git9versioner的博客 754

(C++)类与对象

一、类与对象的思想 面向对象的特点:封装、继承、多态 面向对象编程的特点: (1)易维护:可读性高,即使改变了需求,由于继承的存在,只需要对局部模块进行修改,维护起来非常方便,维护的成本也比较低。 (2)质量高:可以重用以前项目中已经被测试过的类,使系统满足业务需求从而具有更高的质量 (3)效率高:在软件开发时,根据设计的需求要对现实世界的事物进行抽象,从而产生了类 (4)易扩展:由于继承、封装、多态的特性,可设计出高内聚、低耦合的系统结构,使系统更加灵活、更容易扩展,而且成本也比较低。 1、

weixin_53812805的博客 1万+

Win10 桌面回收站右键没有“清空回收站”选项怎么解决

Win10 桌面回收站右键没有“清空回收站” 选项怎么解决? 我之前不知道怎么捣鼓注册表(胡乱删了一些。。。) 导致想清空回收站的时候,右键却没有“清空回收站”这个选项了 以下是解决方法: 1、在桌面上新建一个txt文本文档,将以下代码拷贝进去: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\empty] "Com...

菜鸟的后花园 2万+

C++初阶学习第三弹——类与对象(上)——初始类与对象

C++类与对象部分超详解!!!(新手可入)(上)

2301_80220607的博客 5991

RTPS规范v2.3(中文版)

DDSI-RTPSv2.3,DDS发现互操作性-实时发布订阅通信协议,中文版

pony12的专栏 752

mcgs数据导出到U盘

mcgs触摸屏在工业中应用还是很多的,尤其他的脚本功能策略功能等将开放性放到了最大,让用户可以根据实际需求进行自由创作,正因为这样,对一些初学者就不是很友好,初学者想要简单操作就能实现功能,但是mcgs不可能两者兼备,在做工业设备,一些数据的采集保存就比较常见,但是mcgs没有相关按钮能够直接实现将数据导出到U盘的功能。这里我给大家讲解关于mcgs将报警历史记录、日志记录、历史数据记录导出到U盘的方法。

qq_24866535的博客 6230

Java类与对象

此文章为大家全方位的讲解了什么是Java的类与对象,从类与对象是什么到类与对象如何创建如何实例化以及使用。并且为大家介绍了类的成员有成员变量、成员方法。如何实现private的封装以及如何使用getter和setter方法还有我们的构造方法和代码块,最后最后在文章的结尾教给了大家如何通过电脑自己实现自己生成private的封装,setter和getter的定义以及toSring的定义方法。

xinhang10的博客 4369

推荐国内可使用的chatGPT的工具

是基于ChatGPT 3.5和ChatGPT 4开发的chatGPT应用程序版,这个应用可以直接使用而不需要魔法,如果我们有自己的APT KEY的话可以一直使用,但是如果没有的话,我们只能使用ChatGPT 3.5 版本的,次数也是有所限制,应该是20次每天,这也足够我们的使用了,响应的速度也是非常的快。

有你真好的博客 1万+

什么是类?对象?类与对象的关系是什么?

对象 什么是对象?          万物皆对象。它包括现实中客观存在的事物,也包括抽象的时间、规则、思维。简单点说,对象具有状态、行为和标识。 类 什么是类?          具有相同特性和行为的对象组成的集合就是类...

daponi的博客 3万+

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 236

开放平台实现安全的身份认证与授权原理与实战:使用OAuth 2.0实现授权码模式

作者:禅与计算机程序设计艺术 1.背景介绍 随着互联网应用的飞速发展,各种网站、App、小程序等都将逐渐向用户提供了丰富的功能和服务。在这些应用中,用户通常需要登录才能使用这些服务,这就涉及到用户信息的安全问题。如果用户的信息被泄露或篡改,那么可能造成严重后果。因此,为这些应用提供安全且健壮的身份验

AI天才研究院 492

Java类与对象总结

《Java面向对象编程核心概念解析》 摘要:本文系统介绍了Java面向对象编程中的核心概念。首先阐述了类与对象的区别,类作为抽象模板而对象是具体实例。详细讲解了类的定义语法、成员变量与局部变量的差异,以及实例化过程。重点剖析了this引用的原理和使用场景,解释了对象构造方法和初始化机制。此外,还涵盖了封装特性、访问权限控制、包管理、static关键字的作用,以及各种代码块(普通、构造、静态)的执行顺序和初始化应用。最后介绍了对象打印的toString方法重写技巧。全文通过饮水机等生活案例,生动呈现了面向对象

zcy278854的博客 906

同步调相机启动与并网控制技术方案

同步调相机起动与并网控制技术方案采用背靠背变流器系统,通过静止变频器(SFC)策略实现无原动机驱动的同步电机从静止到同步转速的平稳起动。方案详细阐述了硬件自检、模块初始化、转子位置检测等关键环节,重点解决启动转矩为零、冲击电流大等挑战。系统基于STM32或C2000系列控制器,包含网侧/机侧变流器、检测保护单元及通信接口,通过励磁脉冲和电压响应分析实现高精度转子初始定位,为后续并网提供必要条件。代码级实现涵盖了ADC自检、数字IO验证及通信端口测试等核心功能。

huanghm88的专栏 305

类与对象的使用

class 类名{public:公有变量和函数private:私有变量和函数protected:保护变量和函数类名 对象名例如:public:int r=10;Data a;a.Print();结果:·class为定义类的关键字,后面紧跟着的是类名,{}中为类的主体,注意定义结束后面的分号不能省略。类中的内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或成员函数。

2301_80136889的博客 1042

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

实验二 类与对象

4.定义一个Ladder类,声明实例变量UpperBottom,height,声明类变量LowerBottom,定义方法setUpperBottom,getUpperBottom,setLowerBottom,getLowerBottom,setHeight,getHeight,getArea,3.定义一个zuoye类,创建对象circle,参数传值,设置半径Radius,创建对象circular,调用setHeight,setBottom方法,计算圆锥体积,实现对象的组合,

m0_63421253的博客 1441

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java类的结构与对象

Java 类的结构与对象 类与对象 类中主要包括五种结构,下面进行对这五种结构进行详细的介绍。 1. 面向对象与面向过程 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。 面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。–唯物主义(物质决定意识) 面向对象:Object Oriented Programming 面向过程 : Procedure Oriented Programming 2. 类与对象的关系 类:对一类事物的描述,是抽象的、概念上的定义 对象

weixin_45977186的博客 948

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Java】类与对象

这里的year、month、day都是局部变量,他们并不是类中的成员变量,由于局部变量优先,所以就出现自己给自己赋值的情况,所以就会出现结果都是0️⃣,而这里的0️⃣就是一个默认值,我们后面会讲到,因此我们该怎么解决呢,这时就需要this。在我们传统的手洗衣过程中,我们洗衣服需要考虑洗的衣服的材质,洗衣方式,水温,时间等等各种各样的环节处理起来非常麻烦,如果要洗鞋又是另一种方式,根据对象的不用我们有不同的过程。面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。

aeljg的博客 1036

Java---类与对象

上节我们介绍了数组的详细操作,这期内容我为大家带来类与对象的讲解。这节可以让读者朋友们深入了解Java面向对象的本质,让大家来了解Java中的类一些重要操作

2401_87022967的博客 1753

C++类与对象

C++用类来描述对象,类是对现实世界中相似事物的抽象,比如同是“双轮车”的摩托车和自行车,有共同点,也有许多不同点。“车”类是对摩托车、自行车、汽车等相同点的提取与抽象。类的定义分为两个部分:数据,相当于现实世界中的属性,称为数据成员;对数据的操作,相当于现实世界中的行为,称为成员函数。从程序设计的观点来说,类就是数据类型,是用户定义的数据类型,对象可以看成某个类的实例(某类的变量)。所以说类是对象的抽象,对象是类的实例。由对象抽象出类由类实例化出对象。

caijirui_rui的博客 974

类与对象的详解

类 什么是类? 类:类是对具有相同属性(字段或者成员变量)和行为(法)的一组对象的抽象,对一类对象的统称。 **如何理解:** 就拿人来说吧,我们每个人都有两条胳膊两条腿,两只眼睛一张嘴等,这是我们每个人都具 有的属性;每个人都具有吃饭睡觉的行为,而把 这些每个人都具有的属性和行为抽象为一个类并命名为人类。 再例如汽车类,我们都会想到它具有四个车轮等属性,具有前进后退等行为,这些在我们提到汽车时都会很自然的想起。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201

傻子编程 3610

类与对象(上篇)

类与对象上篇主要讲解了基础框架。学习了1、面向对象的初认识;2、类的引入;3、类的定义;4、类的访问限定符与封装;5、类的作用域;6、类的实例化;7、类对象模型;8、this指针。

wangjiushun的博客 767

01类与对象

类,是一种特殊的“数据类型”,不是一个具体的数据,构成为方法+数据,设计时,应当关注对外提供的功能, 先关注对外(public)提供的接口,设计好之后,再考虑内部(private)需要实现哪些功能。例:定义一个“人类“。对外功能:吃,睡,玩,工作。而后再实现内部数据或者方法,用于实现对外的方法。

weixin_49704754的博客 1195

Java 类与对象

类是对一类事物的抽象描述,是一个“模板”或“蓝图”,定义了这类事物的属性(状态)和方法(行为)。例如:“汽车”是一个类,它的属性包括“颜色、品牌、排量”,方法包括“启动、加速、刹车”。类不占用内存,它只是一种逻辑上的定义。对象是类的具体实例,是真实存在的个体,基于类的模板创建,具有类定义的属性和方法。例如:“我家那辆黑色的特斯拉Model 3”是“汽车”类的一个对象,它的属性有具体值(颜色=黑色,品牌=特斯拉,排量=纯电),可以执行启动、加速等行为。对象占用内存,每个对象都是独立的。类通过。

2501_91241024的博客 1387

认识类与对象

Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象,面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情,用面向对象的思想来设计程序,更加符合人们对事物的认知,对于大型程序的设计和扩展以及维护都非常的友好类是用来对一个实体对象进行描述的,主要描述该对象具有哪些属性和哪些功能[访问修饰符] [修饰符] class 类名{field;//字段或者成员变量method;//行为或者成员方法类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。

phltxy的博客 722

类与对象和类的创建

在类的创建中,如 Cat cat = new Cat()“new Cat()”创建的对象空间(包括其中的数据),才是真正的对象。cat只是一个对象名,进行对象引用,指向对象空间的地址。

m0_75013084的博客 334

类与对象

桂 林 理 工 大 学 实 验 报 告 实验名称 类与对象 日期 2020年 06 月10 日 一、实验目的: 1、学会定义并实现类。 2、学会定义并创建类的对象,通过类的对象访问类的成员属性与方法。 3、学会定义并实现派生类,学会使用派生类的对象。 4、理解并学会使用类的多态性。 二、实验环境: PC+Windows10+Eclipse 三、实验内容: 1.定义并实现一个长方体类(Cube),包含长(length)、宽(

MrLuo8的博客 878
上一篇: 类和成员(中)
下一篇: 程序内存管理知多少
噜啦噜啦嘞好
博客等级 码龄3年 212粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值