java核心思想-面向对象

写在开头

 面向对象编程是当今主流的程序设计思想,已经取代了过程化程序开发技术.
 Java 是完全面向对象的高级编程语言.所以必须熟悉面向对象才能够编写 Java 程序。
 对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。
 今天我们说一下Java编程的核心思想:面向对象.

面向对象思想

  • 面向对象和面向过程

 举个栗子形象的表达下面向对象和面向过程吧:

现在我们有一个操作:把大象放进冰箱里,然后再拿出来.

面向过程的做法是:
把冰箱打开-把大象放进冰箱里-关闭冰箱门-打开冰箱门-把大象拿出来-over

面向对象的做法是:
冰箱打开-冰箱存储大象-冰箱关闭-冰箱打开-冰箱释放大象-over

解析下两个过程,我们发现面向过程强调的是功能的行为,而面向对象把功能装进了冰箱这个对象里,强调具备了功能的冰箱;面向过程的执行者是一直变化的,而面向对象的执行者固定在了冰箱身上;面向过程相对于面向对象会更复杂些.

黑马的一位老师讲的特别好,我这边也贴出来:


  • 面向对象的特点
  1. 是一种符合人们思考习惯的思想
  2. 可以将复杂的事情简单化
  3. 将程序员从执行者转换成了指挥者

完成需求时:

先要去找具有所需的功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用

  • 面向对象的特征:封装(encapsulation),继承(inheritance),多态(polymorphism)

类与对象

类:一系列的属性(特征)和功能的集合
举例 : Person 类
类的属性: 姓名,年龄
功能(方法): 吃饭,睡觉,打豆豆

属性: 表示一个事物的特性,特征
在Java中,属性的表现方式,定义为成员变量
成员变量 : 1)首先是一个变量(数据类型 变量名 = 变量值;)
2)定义位置: 类中,方法外

代码中看就更容易理解了:

1
2
3
4
5
6
7
8
// 定义了一个类 Person
public class Person
{
// 定义成员变量(成员变量一般用于表示类中的属性(特征))
// 每个人,都有年龄和姓名,两个成员变量 (数据类型 变量名 = 变量值;)
String name = "张三";
int age = 25;
}

功能: 方法,表示能做什么事情,或者能完成什么功能
方法的定义:
修饰符 返回值类型 方法名(参数列表)
{
方法要实现的功能;
}

代码中看就更容易理解了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 定义了一个类 Person
public class Person
{
// 定义成员变量(成员变量一般用于表示类中的属性(特征))
// 每个人,都有年龄和姓名,两个成员变量 (数据类型 变量名 = 变量值;)
String name = "张三";
int age = 25;

//在Person类中,定义方法
public void eat(){
System.out.println("人要吃饭");
}
public void sleep(){
System.out.println("人要睡觉");

对象

对象的创建方式:

  1. 类对象创建公式: 类名 变量名 = new 类名();// 创建对象,实例化对象
    Person p    = new Person();

new : 在内存中开辟空间
Person() : 调用了Person这个类的构造方法(构造函数,构造器),空参数的构造方法(后面讲解)

  1. 使用这个对象(使用类的成员变量以及方法)
    属性使用:

1) 属性的获取:
p.name;
p.age;
2) 属性的赋值:
p.name = “张三”;
p.age = 25;
3) 属性的使用范围:
自成员变量定义开始,可以使用在整个类中
方法的使用:
p.eat();
p.sleep();

说明: 以下代码,Person和PersonTest在同一个文件夹下,因此PersonTest中创建Person对象,不需要导包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 定义了一个类 Person
public class Person
{
// 定义成员变量(成员变量一般用于表示类中的属性(特征))
// 每个人,都有年龄和姓名,两个成员变量 (数据类型 变量名 = 变量值;)
// 成员变量,定义在类中,方法外的位置
String name ;
int age ;

//在Person类中,定义方法
public void eat(){
System.out.println(name+"人要吃饭");
}
public void sleep(){
System.out.println(name+age+"人要睡觉");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 用于进行Person类的测试
public class PersonTest
{
public static void main(String[] args)
{
// 使用Person中的属性和方法
// 1. 创建一个Person对象
Person p = new Person();
// 2. 通过变量名p获取到Person中的成员变量 name ,age
String name = p.name;
int age = p.age;
// 3. 通过变量名p给Person中的成员变量 name ,age 进行赋值
p.name = "张三";
p.age = 25;

System.out.println(p);//Person@15db9742
/*说明: 未给Person中的成员赋值时,打印 null---0 ; 给成员变量赋值后,对象中的成员变量值为 张三-------25*/
System.out.println(p.name + "----" + p.age);
// 4. 通过变量名p调用Person中的方法
p.eat();
p.sleep();
}
}

创建对象的内存图:

晚安

 今天就到这里了,明天见,加油!

-------------本文结束感谢您的阅读-------------
0%