面向对象编程
Java是一种面向对象的编程语言。面向对象编程,英文是Object-Oriented Programming,简称OOP
面向对象和面向过程的区别
面向过程编程是自顶而下的编程模式;把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可 面向对象编程是将事务高度抽象化的编程模式; 将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之 间的调用,组合解决问题。在进行面向对象进行编程的时候,要把属性、行为等封装成对象,然后基于这些对象及对象的能力进行业务逻辑的实现;
类和对象
面向对象编程的一个实质性的要素是抽象。人们通过抽象处理复杂性;
类是Java的核心和本质。它是Java语言的基础,因为类定义了对象的本性;
类就是对象的模板(template),而对象就是类的一个实例(instance)。既然一个对象就是一个类的实例,所以object和instance可以互换使用;
class定义了如何创建实例,因此,class本身就是一种数据类型:而instance是根据class创建的实例,可以创建多个instance,每个instance类型相同,但各自属性可能不相同;
创建类
使用关键字class来创建类;
代码语言:java复制定义在类中的变量被称为实例变量,这是因为类中的每个实例(也就是类的每个对象)都包含它自己对这些变量的拷贝。这样,一个对象的数据是独立的且是惟一的; 定义在类中的方法和实例变量被称为类的成员;在大多数类中,实例变量被定义在该类中的方法操作和存取。这样,方法决定该类中的数据如何使用
public class Box {
//定义一个类
int width;
int height;
public int getSquar(){
return width*height
}
}
声明对象
当创建一个类时,也就创建了一种新的数据类型。就可以使用这种
类型来声明该种类型的对象。
获得一个类的对象需要两步:
- 第一步,先声明该类类型的一个变量,这个变量没有定义一个对象。实际上,它只是一个能够引用对象的简单变量。
- 第二步,该声明要创建一个对象的实际的物理拷贝,并把对于该对象的引用赋给该变量。通过使用new运算符实现的。new运算符为对象动态分配(即在运行时分配)内存空间,并返回对它的一个引用。然后这个引用被存储在该变量中。
- 在Java中,所有的类对象都必须动态分配。
Box box = new Box();
类是一个逻辑构造,对象有物理的真实性(也就是对象占用内存空间)
当你将一个对象引用赋值给另一个对象引用时,你并没有创建该对象的一个拷贝,而是仅仅对引用的一个拷贝。
代码语言:java复制public class Box {
//定义一个类
int width = 10;
int height = 1;
private int wh = 100;
public int getSquar(){
return width*height;
}
public void setWh(int wh) {
this.wh = wh;
}
public int getWh() {
return wh;
}
}
public class DemoOOP {
public static void main(String[] args) {
Box box = new Box();
Box box1 = box;
box.height = 10;
System.out.println(box1.height);
box.setWh(102);
System.out.println(box1.getWh());
box1 = null;
System.out.println(box.width);
}
}
输出如下:
方法
构造函数(方法)
类的后面跟的圆括号指定了类的构造函数。构造函数(constructor)在对象创建时初始化。它与它的类同名,它的语法与方法类似;
构造函数定义当创建一个类的对象时将发生什么。构造函数是所有类的重要组成部分,并有许多重要的属性。大多数类在他们自己的内部显式地定义构造函数。如果一个类没有显式的定义它自己的构造函数,那么Java将自动地提供一个默认的构造函数。
构造函数的任务就是初始化一个对象的内部状态,以便使创建的实例变量能够完全初始化,可以被对象马上使用。
一般方法
方法一般的形式:
代码语言:java复制type name(parameter-list) {
// body of method
}
- type指定了方法返回的数据类型。这可以是任何合法有效的类型,包括你创建的类的类型。如果该方法不返回任何值,则它的返回值type必须为void 。
- 方法名由name指定。方法名可以是任何合法的标识符。除了不能使用java的保留字;
- parameter-list (变量列表)是一系列类型和标识符对,用逗号分开,也叫形参。接收方法被调用时传递给方法的参数值(实参)。变量列表可以为空。
- 对于不返回void类型的方法,使用下面格式的return语句,方法返回值到它的调用程序,其中,value是返回的值。:return value;
方法的参数:
代码语言:java复制方法可以包含0个或任意个参数。方法参数用于接收传递给方法的量值。调用方法时,必须严格按照参数的定义一一传递。 参数还可以使用可变参数;可变参数用 类型… 定义,可变参数相当于数组类型;可变参数可以保证无法传入 null ,因为传入0个参数时,接收到的实际值是一个空数组而不是 null
public int getWidth(int... w){
return 0;
}
在方法内部,可以使用一个隐含的变量 this ,它始终指向当前例。因此,通过 this.field 就可以访问当前实例的字段。如果没有命名冲突,可以省略 this 。但是,如果有局部变量和字段重名,那么局部变量优先级更高,就必须加上 this
我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!