JAVA学习day06 JavaSE基础——面向对象
1.1 理解什么是面向过程,什么是面向对象。
面向过程与面向对象都是我们编程中,编写程序的一种思维方式。
面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。
例如:洗衣服这件事,面向过程就是思考怎么洗这件衣服,先泡衣服、搓衣服、漂洗、拧干、晒衣服。这就是面向过程的思维方式。
面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。
还是洗衣服这件事,面向对象的思想就是把这件事交给一个对象去干,这个对象它就是洗衣机,你只要把衣服扔进去,怎么洗是这个对象自己的事情,但最后它也能完成这件洗衣服的事。
1.2 面向对象的好处
● 面向对象思维方式是一种更符合人们思考习惯的思想;
● 面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情);
● 面向对象思维方式将复杂的问题简单化。
1.3 面向对象的三大特征
封装、继承和多态
1.4 类和对象的概述
类是我们学习java 最基本的单位,是一组相关属性和行为的集合,所以类可以用来描述一个事物。对象就是这个类的具体体现。
例如:
类:学生
对象:班长
下面我们用一个学生类的案例来演示一下:
public class StudentDemo {
private String name;
private int age;
private char sex;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public void study(){
System.out.println("学习");
}
}
再创建一个学生类的对象:
public class MyTest {
public static void main(String[] args) {
StudentDemo student = new StudentDemo();
System.out.println(student.name = "张三");
System.out.println(student.age = 15);
System.out.println(student.sex = '男');
student.eat();
student.sleep();
student.study();
}
}
运行结果:
图 1-1 运行结果截图
通过上述代码的描述,我们知道类的真正意义就是描述事物,而属性和功能统称为类的成员。
1.5 对象的内存图解
就拿上面的学生类来做一个对象的内存图解如下:
图 1-2 一个对象的内存图
1.6 成员变量和局部变量的区别
a. 在类中的位置不同
成员变量:在类中方法外;
局部变量:在方法中或方法声明上;
b. 在内存中的位置不同
成员变量:在堆内存;
局部变量:在栈内存;
c. 声明周期不同
成员变量:随着对象的建立而存在,随对象的消失而消失;
局部变量:随着方法的调用而存在,随方法的弹栈而消失;
d. 初始化值不同
成员变量:有默认的初始值,如String初始化值为 null;
局部变量:没有默认的初始值,定义赋值后才能使用。
1.7 匿名对象的使用
匿名对象就是new 一个对象时不命名的对象,常用于仅仅调用一次的时候,匿名对象也可以作为参数传递。
1.8 对象的封装
封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
封装的原则:
将不需要的对外提供的内容隐藏,把属性隐藏,提供公共的访问方式对其进行访问。
代码演示:
package org.westos.demo5;
public class Student {
private String name;
private int age;
private char sex;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setSex(char sex){
this.sex = sex;
}
public char getSex(){
return sex;
}
public void eat(){
System.out.print("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public void study(){
System.out.println("学习");
}
}
//测试封装
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("大黄");
student.setAge(20);
student.setSex('男');
System.out.println(student.getName());
System.out.println(student.getAge());
System.out.println(student.getSex());
student.eat();
student.sleep();
student.study();
}
}
运行结果:
图 1-3 运行结果截图
上面代码中提到的 private 和 this 两个关键字的作用:
private:是一个权限修饰符,可以用来修饰成员变量和成员方法,被private修饰的成员只能在本类中访问;
this:是指当前类的一个对象引用。简单来说,this就是代表的一个对象,谁调用这个方法,这个方法内部的this就代表这个谁。this 解决了局部变量隐藏成员变量的问题。