当前位置:网站首页>对象和类的概念
对象和类的概念
2022-04-23 03:32:00 【辰 羽】
1、 面向对象编程
java的核心思想就是面向对象(OOP Object-Oriented Programming)
。面向对象适合处理复杂问题,适合处理多人协作的问题。对一个问题来说,首先是把问题进行分类,然后对类单独思考,最后对每个类进行面向过程的分析。
面向对象编程的本质是:以类的方式组织代码,以对象的形式封装数据
。
一个程序看成是各种对象集合,对象是最小的单位。一组相关的对象组成了一个复杂的系统。
1.1 对象的概念
那么什么是对象?
现实生活中的任何事物都能看成是一个对象,我们通常通过静态部分(属性)和动态部分(行为),来了解事物。
万物皆为对象,问题领域中的实体和概念都可以抽象为对象。学校领域中:学生、老师、课程、班级等等都为对象。
- 对象在一个系统中是唯一的
- 对象具有属性和行为:静态部分(属性)和动态部分(行为)
现实中我们是怎么样描述一个人的?通常是通过他的高矮胖瘦、性别、年龄等属性。除此之外一般还会描述他当前正在做的事情:说话、跑步、哭泣等等行为。通过这几个方面我们可以充分了解一个人。 - 对象具有状态:某个行为发生后可能会改变属性的取值。
- 对象都是某个类的具体实现。
我们在计算机中如何去描述一个正在学习的学生A?
1、首先我们将学生这个实体抽象为一个对象,然后去考虑学生的属性和具体行为。
2、属性:学号、姓名、年龄、性别、班级等等。 行为:学习、游戏、运动等等
3、通过属性去具体到这个学生A。
4、描述学生A正在学习。
所以我们通过分析学生的静态部分和动态部分就能确定一个具体的学生对象。
1.2 类的概念
类其实可以当成一个模板来看,而对象就是通过这个模板造出来的实体。现实中我们印刷纸币,就需要先制造模板(类),然后通过模板快速的产生一张张的纸币(对象)。
所以类的实质就是封装对象属性和行为的载体,而对象就是类的一个实例。类就是一系列具有相同特征的对象的统称。对象的属性在类中以成员变量的形式定义,而行为定义为具体的方法。
2、 类和对象
2.1、包
在java中我们需要创建不同的类,根据类创建对象去编写程序,所以当我们的程序越来越大时,如果将所有的类放在一起,管理的难度可想而知,我想任何人看到一大堆类在一起都会很头疼吧。
所以在java中引入了包(package)的概念。它类似于文件夹,可提供多层的命名空间。
包的 3 个作用如下:
- 可以方便我们区分相同名称的类
- 可以更方便的对类进行管理和维护
- 可以更方便的控制类的访问权限
代码中的第一行就是包定义语句,通过关键字package。后面跟包的导入语句,关键字为import
package 包名(com.*****); //第一行,且只能有一个
import 包名+类名; //在package之后,可以有多个
2.2 、 类
类(Class)是封装对象属性和行为的载体,是一个用于创建java对象的模板,它将对象的共同特征和行为抽象出来,用成员变量表示事物的属性,用方法描述具体的行为,从而形成类。通过new关键字对类实例化,即是创建了具有这种特征和行为的一个对象。
我们定义一个学生的类:
2.2.1 属性
Java对象的属性即是成员变量,成员变量是可以设置成各种不同的数据类型,可以赋初值,也可以不赋值(有默认值)。通常属性用关键字private设置,表示为私有的,其他类不可见,通过提供一些方法去操作属性。
2.2.2 方法
方法一般为两种:构造方法和普通方法。
1、构造方法
Constructor(构造器) 是类中一种特殊的方法,只在对象创建的时候执行一次,用来进行初始化的一些操作,类默认会有一个无参的构造方法,也可以自己定义,但是一旦自己定义,默认的构造方法就会被覆盖。构造方法可重写,会根据传递的参数不同而自己选择相应的构造方法。
- 特点
- 无返回值,无void
- 方法的名字和类名完全相同
- 作用
- 主要用来对属性进行初始化
public class Student{
private String name;
//构造方法。无返回值,方法名字和类型相同
public Student(String name){
this.name = namel
}
//定义了有参的构造方法,还想用无参的构造,就必须手动定义
public Student(){
}
}
2、普通方法
-
方法的定义
//普通方法 权限修饰符 返回值类型 方法名(参数类型 参数名......){ //无返回值为void,有返回值则为相应的数据类型 方法体; return 返回值; //有返回值时,使用关键字return返回 } /** 1、修饰符:是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 2、返回值类型 :方法可能会返回值。也可能没有返回值。有返回值时表明返回值类型,并使用return返回。没有时使用void关键字 3、参数类型:调用方法时传递给方法的参数,此参数可以在方法体中使用。 4、方法体:方法体包含具体的语句,定义该方法的功能。 5、关键字return:代码执行到return后直接结束,后续代码不再执行。return后跟相应的返回值 */
方法在传递参数时除了有普通的参数外,还有一种可变的参数:
-
方法的调用
- 调用的方法传递参数的类型必须和方法的参数一致
- 静态方法:关键字static修饰的方法,类加载时就会产生
- 类名.方法名();
- 非静态方法:对象创建时才会产生
- 先实例化对象:类名 对象名 = new 类名();
- 对象名.方法名();
//创建一个有关人的类,通过属性描述一个人,人有自己的具体行为
package **; //类所在的包
import **; //导入其他的类
//class关键字表示为一个类,public为权限,Person为类名
public class Person(){
//属性,一个人有哪些特征。人有姓名、有年龄、有性别
private String name; //姓名
private int age; //年龄
private String sex; //性别
//构造函数,每个类都有一个默认的构造函数,可自己定义,定义后默认为自定义的
public Person(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public Person(){
}
//普通方法,人可以说话
public void say(){
System.out.printf("我叫%s,今年%d岁,性别%s",name,age,sex);
}
}
2.2.4 内部类
2.3、对象
2.3.1 对象的创建
生成一个对象的步骤:
1、声明:声明一个对象,即声明对象的类型和名称。
2、实例化:通过new关键字创建一个对象。
3、初始化:当使用new创建对象时,会调用构造函数初始化对象。
创建对象的语法:类名 名 = new 类名(); 创建一个学生的对象 Student student = new Student(); student实际上是一个对象的引用,它保存的不是对象本身,而是对象的地址(对象的数据保存在堆内存中,栈内存中是在堆内存中的地址)。
同一个类创建的不同对象是相互独立的,在创建时分配内存地址,当对象不再使用时,对象由Java虚拟机的垃圾回收处理机制回收。
2.3.2 对象的使用
-
访问属性:属性不能设置为私有
对象名.属性名 = 值;
-
调用方法
对象名.方法名(参数);
版权声明
本文为[辰 羽]所创,转载请带上原文链接,感谢
https://blog.csdn.net/yuandfeng/article/details/114333798
边栏推荐
- Several common methods of multithreading
- Alphafpld upgrade alphafold multimer
- JS inheritance
- Test questions (2)
- The content of the website is prohibited from copying, pasting and saving as JS code
- Cefsharp stores cookies and reads cookies
- Initial experience of talent plan learning camp: communication + adhering to the only way to learn open source collaborative courses
- 全新的ORM框架——BeetlSQL介绍
- Utgard connection opcserver reported an error caused by: org jinterop. dcom. common. JIRuntimeException: Access is denied. [0x800
- The art of concurrent programming (5): the use of reentrantlock
猜你喜欢
New ORM framework -- Introduction to beetlsql
Section 2 map and structure in Chapter 6
On the principle of concurrent programming and the art of notify / Park
TCP three handshakes and four waves
Problem a: face recognition
Design and implementation of redis (2): how to handle expired keys
Unity games and related interview questions
MySql关键字GROUP_CONCAT,组合连接查询
2022 group programming ladder game simulation L2-4 Zhezhi game (25 points)
全新的ORM框架——BeetlSQL介绍
随机推荐
Translation of l1-7 matrix columns in 2022 group programming ladder Simulation Competition (20 points)
Un aperçu des flux d'E / s et des opérations de fichiers de classe de fichiers
Build websocket server in. Net5 webapi
Websites frequented by old programmers (continuously updated)
第四次作业
Variable definition and use
Design and implementation of redis (1): understand data structures and objects
Design and implementation of redis (3): persistence strategy RDB, AOF
Applet - more than two pieces of folding and expansion logic
Problem B: small challenge
Definition format of array
Optimization of especially slow startup in idea debugging mode
2022 group programming ladder simulation l2-1 blind box packaging line (25 points)
Log4net is in Net core usage
socket編程 send()與 recv()函數詳解
2022 团体程序设计天梯赛 模拟赛 1-8 均是素数 (20 分)
WinForm allows the form form to switch between the front and active states
Initial experience of talent plan learning camp: communication + adhering to the only way to learn open source collaborative courses
The fourth operation
Section 2 map and structure in Chapter 6