文章目录
面向过程 &面向对象
-
面向过程思想
- 步骤清晰简单,第一步干啥,第二步干啥
-
面向对象思想
- 类似于分类讨论,就比如你遇到一个实际问题,你要怎么解决,分别讨论哪种情况,然后对这些情况分别思考。
- 可以多人协作
-
对于描述复杂的事物,为了从宏观上把握,宏观上分析,我们要用面向对象的思路来分析整个东西,对于每个情况要单独分析,要用面向过程的思路。
什么是面向对象
- 面向对象编程(Object-Oriented Programming,OPP)
- 面向对象编程的本质:以类的方式组织代码,以对象的方式封装数据。
- 抽象的概念
- 三大特性
- 封装
- 继承
- 多态
- 从认识论角度想是现有对象后有类。对象是具体的事物,类是抽象的,是对对象的抽象
- 从代码运行角度想是先有类后有对象。类是对象的模板。
类与对象的关系
-
类是一种抽象的数据类型,它是对某一类事物的整体描述,但是不代表某一个具体的事物。
- 动物、植物…
- Person类、Pet类…这些类都是用来描述某一类具体的事物应该具备的整体特点和行为。
-
对象是抽象概念的具体实例
- 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。
- 能够体现除特点,展现出功能的是具体的实例,而不是一个抽象的概念。
1.类与对象
-
类:类是一个模板,它描述一类对象的行为和状态。
-
对象:对象是类的一个实例(对象不是找个女朋友),有==状态和行为。==例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
Java中的对象
现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。
拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。
对比现实对象和软件对象,它们之间十分相似。
软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。
在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
public class Pet{ public Pet(){ //这里是无参构造 } public Pet(String name){ //这个是有参构造,且只有一个参数 } }
创建对象
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
- 声明:声明一个对象,包括对象名称和对象类型。
- 实例化:使用关键字 new 来创建一个对象。
- 初始化:使用 new 创建对象时,会调用构造方法初始化对象。
下面是一个创建对象的例子:
public class Pet{ public Pet(String name){ //这个构造器只有一个参数:name System.out.println("小狗的名字是:"+name); } public class void main(String[] args){ //使用new关键字创建一个对象 Pet dog = new Pet("黑子"); } }
2.方法的定义、调用
那么什么是方法呢?
Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
方法的优点
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
- 提高了代码的重用性。
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
- **修饰符:**修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
- **方法名:**是方法的实际名称。方法名和参数表共同构成方法签名。
- **参数类型:**参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- **方法体:**方法体包含具体的语句,定义该方法的功能。
例如:
public static int max(int num1,int num2,...)
实例
下面的方法包含 2 个参数 num1 和 num2,它返回这两个参数的最大值。
public static int max(int a,int b){ //三元运算符,一步到位 return a>b?a:b; }
方法调用
Java 支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30, 40);
如果方法返回值是void,方法调用一定是一条语句。例如,方法println返回void。下面的调用是个语句:
System.out.println();
方法的重载
上面使用的max方法仅仅适用于int型数据。但如果你想得到两个浮点类型数据的最大值呢?
解决方法是创建另一个有相同名字但参数不同的方法,如下面代码所示:
public static double max(double num1, double num2) { if (num1 > num2) return num1; else return num2; }
如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;
如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;
就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
Java编译器根据方法签名判断哪个方法应该被调用。
方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。
3.8大基本数据类型
byte、short、int、long、float、double、boolean、char
基本类型:byte 二进制位数:8 包装类:java.lang.Byte 最小值:Byte.MIN_VALUE=-128 最大值:Byte.MAX_VALUE=127 基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 最大值:Short.MAX_VALUE=32767 基本类型:int 二进制位数:32 包装类:java.lang.Integer 最小值:Integer.MIN_VALUE=-2147483648 最大值:Integer.MAX_VALUE=2147483647 基本类型:long 二进制位数:64 包装类:java.lang.Long 最小值:Long.MIN_VALUE=-9223372036854775808 最大值:Long.MAX_VALUE=9223372036854775807 基本类型:float 二进制位数:32 包装类:java.lang.Float 最小值:Float.MIN_VALUE=1.4E-45 最大值:Float.MAX_VALUE=3.4028235E38 基本类型:double 二进制位数:64 包装类:java.lang.Double 最小值:Double.MIN_VALUE=4.9E-324 最大值:Double.MAX_VALUE=1.7976931348623157E308 基本类型:char 二进制位数:16 包装类:java.lang.Character 最小值:Character.MIN_VALUE=0 最大值:Character.MAX_VALUE=65535
注:部分代码来源于菜鸟教程