Java是一种面向对象的编程语言。面向对象编程,英文是Object-Oriented Programming,简称OOP
面向对象和面向过程的区别
面向过程编程是自顶而下的编程模式;把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可 面向对象编程是将事务高度抽象化的编程模式; 将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之 间的调用,组合解决问题。在进行面向对象进行编程的时候,要把属性、行为等封装成对象,然后基于这些对象及对象的能力进行业务逻辑的实现;
面向对象编程的一个实质性的要素是抽象。人们通过抽象处理复杂性;
类是Java的核心和本质。它是Java语言的基础,因为类定义了对象的本性;
类就是对象的模板(template),而对象就是类的一个实例(instance)。既然一个对象就是一个类的实例,所以object和instance可以互换使用;
class定义了如何创建实例,因此,class本身就是一种数据类型:而instance是根据class创建的实例,可以创建多个instance,每个instance类型相同,但各自属性可能不相同;
使用关键字class来创建类;
定义在类中的变量被称为实例变量,这是因为类中的每个实例(也就是类的每个对象)都包含它自己对这些变量的拷贝。这样,一个对象的数据是独立的且是惟一的; 定义在类中的方法和实例变量被称为类的成员;在大多数类中,实例变量被定义在该类中的方法操作和存取。这样,方法决定该类中的数据如何使用
public class Box {
//定义一个类
int width;
int height;
public int getSquar(){
return width*height
}
}
当创建一个类时,也就创建了一种新的数据类型。就可以使用这种
类型来声明该种类型的对象。
获得一个类的对象需要两步:
Box box = new Box();
类是一个逻辑构造,对象有物理的真实性(也就是对象占用内存空间)
当你将一个对象引用赋值给另一个对象引用时,你并没有创建该对象的一个拷贝,而是仅仅对引用的一个拷贝。
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将自动地提供一个默认的构造函数。
构造函数的任务就是初始化一个对象的内部状态,以便使创建的实例变量能够完全初始化,可以被对象马上使用。
一般方法
方法一般的形式:
type name(parameter-list) {
// body of method
}
方法的参数:
方法可以包含0个或任意个参数。方法参数用于接收传递给方法的量值。调用方法时,必须严格按照参数的定义一一传递。 参数还可以使用可变参数;可变参数用 类型… 定义,可变参数相当于数组类型;可变参数可以保证无法传入 null ,因为传入0个参数时,接收到的实际值是一个空数组而不是 null
public int getWidth(int... w){
return 0;
}
在方法内部,可以使用一个隐含的变量 this ,它始终指向当前例。因此,通过 this.field 就可以访问当前实例的字段。如果没有命名冲突,可以省略 this 。但是,如果有局部变量和字段重名,那么局部变量优先级更高,就必须加上 this
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。