面向对象是Java基础的核心部分
- Java面向对象学习的三条主线
- 面向过程和面向对象
- 类和对象的关系
- 类的结构
- 用类创建对象
- 对象在内存中的情况
- 属性对比局部变量
- 声明方法
- return关键字
- 使用方法的注意点
- 练习+考试+复习
1,Java面向对象学习的三条主线
以下内容是穿插在之后的学习中并行往前推进的
1. Java类及类的成员:属性、方法、构造器;代码块、内部类
2. 面向对象的三大特征:封装、继承、多态、(抽象)
3. 其他关键字:this、super、static、final、abstract、interface、package、import等
2,面向过程和面向对象
- 面向过程注重的是做一件事的过程,先做什么,后做什么,最后做什么
- 面向对象则注重这件事要由谁来做,这个“谁”不再特定指人,而是这个过程中可以抽象出来的对象
- 比如球拍击打网球,网球弹飞。以面向对象的角度看,这个过程中将球拍和网球看作是两个对象,球拍有“击打”这个动作,网球有“弹飞”这个动作,这个过程就变成了球拍这个对象对网球调用自己“击打”的这个动作,然后网球调用自己“弹飞”的动作
- 面向对象的设计思想要高于面向过程,前者的可扩展性、重复利用代码都高于后者
在关于一段过程的描述当中,里面的名词可能会定义成一个类,由它生成的具体对象去完成自己的动作,就形成了这段过程
3,类和对象的关系
- 如果将“人”这个词看做是一个类,由这个类的定义“创建/实例化”出来的我们每个实实在在的个体,都是“人”这个类的对象。但实际上是先有的人,再有的“人”这个概念,只是将每个个体的共同特征抽离出来形成了“人”这个概念
- 面向对象编程的重点是类的设计;类的设计就是类成员的设计
- 描述“人”这一概念时,它有属性和行为,比如身高体重和跑步走路。类比到Java中的类,属性和行为也是描述一个类的基本结构,它们定义了一个类由什么组成,能做些什么动作
package com.atguigu.java;
/*
* 类和对象的使用
* 1,创建类,设计类的成员。最主要的步骤
* 2,创建类对象
* 3,通过对象名.属性/方法的方式使用对象
*
* 如果创建了一个类的多个对象,则每个对象都拥有一套自己的属性值(非static),
* 也意味着修改一个对象的属性a,不会影响另一个对象的属性a的值
*/
public class PersonTest { // 测试类
public static void main(String[] args) {
Person p1 = new Person(); // 创建类的对象/类的实例化
p1.name = "Tom"; // 调用对象属性
p1.isMale = true; // 给对象属性赋值
System.out.println(p1.name); // Tom
p1.eat();
p1.sleep();
p1.talk("Chinese"); // 调用对象方法
Person p2 = new Person(); // 另一个对象
System.out.println(p2.name); // null,属性有默认值
System.out.println(p2.isMale);
Person p3 = p1; // 将p1保存的对象地址赋值给p3,p1和p3都指向同一个对象
System.out.println(p3.name); // Tom
p3.age = 10;
System.out.println(p1.age); // 10
}
}
class Person { // 定义类
// 属性
String name;
int age = 1;
boolean isMale;
// 方法
public void eat() {
System.out.println("人可以吃饭");
}
public void sleep() {
System.out.println("人可以睡觉");
}
public void talk(String langue) {
System.out.println("会说" + langue);
}
}
上面的代码中,对象存在于内存的情况如下