文章目录
面向对象编程(Object Oriented Programming,即OOP)
1,面向对象的概述
面向对象(Object Oriented)简称OO,它是一种编程思维,用于指导我们如何应对各种复杂的开发场景。
在面向对象的世界中,它将一切都看作是对象。这里的对象有许多,它可以是现实世界中看得见摸得着的实体:人、小猫、小狗、飞机、课桌、铅笔、电视等等等等,都可以看作是对象。即————一切皆为对象。
1.1,对象
对象是现实生活中最常见也是随处可见的一种事务。如:一个具体的人小猫、小狗、飞机、课桌、铅笔、电视等。
1.2,类
类是一种==抽象的==,类是一种有相同特性和行为的事务的统称,如果将一个具体的事务称为对象的话,那么类就是这些对象的一个统称。如:人类,花类
2,类的详细介绍
2.1,成员变量和成员方法
成员变量:在java中成员方法定义在类中方法外,与普通变量定义无异只是位置不同。
而成员变量的作用范围在整个类存在期间都存在直到类失效。
成员方法:定义格式如下
修饰符(public | private | protected) 返回类型 方法名 (参数类型 参数名){
… //方法体
return 返回值;
}
一个成员方法可以有返回值也可以无返回值,可以有参数也可以无参数,参数可以是:对象,基本数据类型 等
注意:当有返回值时返回值类型要与设置的返回类型一致。
public class demo {
int n;//int类型的成员变量
public static void main(String[] args) { //主方法
}
public int sum(int a,int b){ //成员方法
return a+b;
}
}
2.2局部变量
局部变量:在java中被定义在一个方法内部的变量。如上面的方法内部的a,b
局部变量是在方法被执行的时候被创建,在方法被销毁的时候就销毁,在使用的时候必须进行赋初值或者进行初始化才可使用,否则出现编译错误。
局部变量的有效范围:
用个例子来举例:
2.3,this关键字
this是一个隐含的关键字,指本类的当前对象的引用,而这个当前对象不是指被new出来的对象而是指当前的调用者。
this关键字只能用于本类
2.4,静态变量和静态方法(static)
提到静态变量和静态方法就离不开,关键字static,由关键字修饰的变量和方法称为静态变量和方法。
静态类的变量和方法可以使用
类名.静态类成员 或
对象.静态类成员 (不推荐)
因为这样的话会容易混淆静态成员与非静态成员
静态变量与静态方法都是被类中的所有对象共享的
静态符修饰的成员,是随着类的加载而加载的,优先于对象
静态方法不可以使用this关键字
static修饰的成员是跟随者类的加载而加载,而this是随着对象的创建而存在。所以静态先于对象创建,故不能使用this
静态方法只能调用静态成员变量和静态成员方法,不能调用成员变量和成员方法
static修饰的成员是跟随者类的加载而加载,而对象的创建在类加载之后而存在。所以静态先于对象创建,而成员变量和成员方法是在类加载之后出现,故只能调用静态成员变量和静态成员方法,不能调用成员变量和成员方法
主方法也设置为static
将主方法设计为静态的,入口类,一加载,JVM就可以直接通过类名调用main方法,否则进入后还要创建对象调用main方法。因为static修饰的成员是跟随者类的加载而加载
总结static关键字要注意的点:
- 静态方法不可以使用this关键字
- 静态方法只能调用静态成员变量和静态成员方法,不能调用非静态方法
- 局部变量不可以使用static关键字
- 主方法要用static声明
2.5静态变量与成员变量的区别
所属不同类型
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
内存中的位置不同
静态变量存储于JDK1.8之前 方法区的静态区, 在 JDK1.8之后 静态变量存储在堆内存中
成员变量存储于堆内存
在内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
调用的方法不同
静态变量可以通过类名调用,也可以通过对象调用,推荐使用类名调用
成员变量只能通过对象名调用
2.6,构造方法
每个类都会自动创建一个默认的构造方法就是无参构造方法,也可以自己定义构造方法(有参构造方法)。
对象的创建就是通过构造方法实现,
public class MyClass {
private int m; // 定义私有变量
MyClass() {
// 定义无参的构造方法
m = 0;
}
MyClass(int m) {
// 定义有参的构造方法
this.m = m;
}
}
构造方法的特点
- 方法名与类名相同
- 可以有零个,一个或多个参数
- 没有任何返回值,包括void
- 默认返回类型就是对象类型本身
- 只能与 new 运算符结合使用
注意
若构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。
3,对象的详细介绍
对象就是由类的实例化而来,指代一个具体的事务。
3.1,对象的创建
在java语言中,通过new操作来实现一个对象的创建。每实例化一个对象就调用一次构造方法,而这个过程也就是对象创建的过程。如:
Test test = new Test();
Test test1 = new Test("a");
Test test2 = test;
3.2,对象访问属性和方法
对象可以调用相关属性和方法
对象名.成员
对象名.方法
3.3,对象的销毁
每个对象都有自己的生命周期,当生命周期结束对象也将毁灭,分配的内存地址被回收内存空间被java的垃圾回收机制所释放
public class NumberTest {
public static void main(String[] args) {
Number number =new Number(1,6);
int a = number.add();
int b = number.sub();
int c = number.mul();
double d = number.div();
System.out.println("加:"+a+"减:"+b+"乘:"+c+"除:"+d);
number = null;
}
}