Java语言是一种面向的程序设计语言,而面向对象思想是一种程序设计思想。我们参照面向对象思想使用java语言去设计,开发计算机程序。
除去面向对象之外还有一个面向过程。
区别:
- 面向过程:当要实现一个功能的时候,面向过程,要处理好每一个节点,直至整个过程结束,然后得到结果。
- 面向对象:当要实现一个功能的时候,直接去调用一个关于这个功能相关的类,把过程交给其他类来处里,自己等着获取结果
- 面向过程强调这功能的步骤,面向对象强调这功能的结果。
举例:
-
-
面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来
特点:
什么是类:
类是对一种具有类似的属性和行为的事物的集合。eg:学生类,教师类等等。学生有相同的属性:学生证号,姓名等等,有相同的行为:做作业,写卷子等等。
现实中:
- 属性
- 行为:就是该事物能够做什么。
什么是对象:
类与对象的关系:
- 类是对一组事物的统称描述,类似抽象的,它看不见摸不着 eg: 比如手机类是手机的统称,它有一系列的属性比如颜色,配件等等,行为是
- 对象是一组事物的实例,是具体的,是真正存在的可以看得见摸得着 eg: 你买的一个小米9手机是一个实实在在的东西,就属于一个对象
类的定义:
访问权限修饰符 class 类名 {
//成员变量
//成员方法
}
对象的定义:类名 对象名 = new 类名();
类与对象的练习:
public class OverloadDome03 { // 定义一个求和 工具类 /* 定义sum方法两个sum(int,int) 并返回值*/ public int sum(int a,int b) { return a+b; } /* 定义sum方法两个sum(int,int,int) 并返回值*/ public int sum(int a,int b,int c) { return a+b+c; } /* 定义sum方法两个sum(double,double) 并返回值*/ public double sum(double a,double b) { return a+b; } /* 定义sum方法两个sum(int,double) */ public void sum(int a,double b) { System.out.println(a+b); } } public class OverloadDome03Test { /* 求和测试类 */ public static void main(String[] args) { OverloadDome03 ov03 = new OverloadDome03();//实例化OverloadDome03 double sum = ov03.sum(0.0, 1.293); //调用sum(double,double)f方法 并打印 System.out.println(sum); int sum1 = ov03.sum(1,2); //调用sum(int,int)f方法 并打印 System.out.println(sum1); ov03.sum(12,19.22); //调用sum(int,double); int sum2 = ov03.sum(1,2,3); //调用sum(int,int,int)f方法 并打印 System.out.println(sum2); } }
语法:
访问权限修饰符 静态修饰符 返回值类型 方法名(参数类型 参数名,参数类型 参数名...){
执行代码...
return 返回语句;
}
成员变量和局部变量:
在之前的个工作中,我们学习了怎么去定义变量,变量又分为成员变量(又叫全局变量)和局部变量。下面直接说区别吧。
- 位置不同:全局变量定义在类之内,方法之外;局部变量定义在方法之内。
- 作用域不同:全局变量作用于整个类中;局部变量作用于单个方法之中。
- 初始化不同:全局变量可以不用初始化赋值就可以使用;局部变量若要使用必须先初始化然后才能使用。
- 内存位置不同:全局变量存储在堆内存,局部变量存储在栈内存。
- 生命周期不同:全局变量随对象的创建而存在,随对象的销毁而消失。局部变量随方法的调用而创建,方法结束而消失。
下面简单的定义一下:
public class VariableDome01 { int j; // 定义一个全局变量j public void test1() { int i = 1; //定义一个局部变量i并赋值i System.out.println(j+i); //假若i没有赋值将无法使用 } } //测试 public class VariableDome01Test { public static void main(String[] args) { VariableDome01 variableDome01 = new VariableDome01(); variableDome01.j=1; //测试中可以直接给j赋值却不能为i赋值因为i只作用于VariableDome01中test1方法中 variableDome01.test1(); //调用后打印为2 } }
方法重载:
概念:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不相同,类型不同或者数量不同
- 参数列表:个数不同,数据类型不同,顺序不同。
如下有几个方法,可以看看重载方法有几个:
public static void method(){} public static void method(int a){} static void method(int a,int b){} public static void method(double a,int b){} public static void method(int a,double b){} public void method(int i,double d){} public void method(){} public static void method(int i,int j){}
我简略的分析一波=-=我比较菜
个人学习,内容简略。