目录
面向对象的思想介绍
1 面向对象:是一种编程使用思想,编程思路(设计程序的一种模式)
2 面向过程和面向思想过程的比较:都是编程思想,面向对象是基于面向过程的,面向过程是面向对象的基础。
面向过程:在解决程序设计模式时,更强调的是解决问题的步骤,解决问题的方式,更强调的是方法, 就解决问题是: 自顶向下,不断分解的过程 。 c语言就是面向过程的语言,强调的是过程的实现,从基本的开始写起。 C++是面向对象的语言。
面向对象:更将强调的是解决问题的主题,更强调的是谁来解决这个问题,更强调的是谁拥有数据,谁拥有数据的使用权限。 自底向上,不断拼装。
3 两种思想的总结:面向对象是面向过程更高层次的编程思想,因为面向过程是面向对象的基础。
4 面向对象好处
1 更加符合人们的思想习惯:凡是习惯找对象,找工具,找人,帮助解决问题。
2 复杂问题简单化
3 有执行者变成了指挥者
类和对象
1 类 :就是类型的意思,是对具体事务的一个抽象的结果,其实就是一个抽象的概念。
抽象:抽取一个类事务中相同或者相似的东西,抽取之后会形成一个概念。
类:具有相同特征或行为事务的抽象
2 对象 :就是一类事物的一个具体体现 类的实例化
类的说明
1 类:具有相同特征和行为事务的抽象
2 类一般都是使用名词描述,类包含特征和行为,类的特征指的是类的属性,成员变量
3 特征:属性,成员变量,一般都是名词和形容词描述
在java语言中,特征就是成员变量,定义成员变量的时候,就和之前定义普通变量一样,普通变量定义在方法中,类的成员变量定义在类中。
4 行为:对于一类事物功能的一个描述,都是能动的。一般使用动词或者动宾起的名字
在java语言中,行为就是方法,以前定义方法的时候,都要加public static 修饰,类的行为只有修饰符和之前不一样,其它的全部一样,修饰符省略掉了,static
public 返回值类型 方法名(参数列表){
方法体;
}
5 根据以上的描述定义第一个Java类
以后如何定义一个类:分析这个类有哪些特征,分析这个类有哪些行为。
定义一个人类:
特征--->成员变量 姓名,年龄,身高,性别,体重,学历
行为: 吃 喝 拉 撒 睡
package com.day04; public class Person { //成员变量 //姓名 String name; //年龄 int age; //性别 String gender; //行为: 对象方法 //吃 public void eat() { System.out.println("吃肘子"); } //喝 public void drink() { System.out.println("和coco"); } //睡 public void sleep() { System.out.println("睡美人"); } }
局部变量和成员变量的区别
1 成员变量:定义在类中,方法外
2 局部变量:定义在方法中
位置不用: 成员变量在堆中,局部变量在栈中
3 生命周期:从定义到它所占的内训空间被回收的过程
成员变量:随着对象的出生而出生,随着对象的被回收而消失
局部变量:随着方法进栈而产生,随着方法的出栈而被销毁。
4 初始化状态不同:
局部变量,如果不赋值,就没有被初始化,系统也不会默认初始化。
注意:局部变量不赋值是不能使用的。否则就会编译报错。
成员变量,如果不赋值,有默认的初始值,引用类型的成员变量时null 整数0 小数0.0 布尔 false 字符 ' '
成员变量和局部变量同名时如何区分?
1 当在一个方法中访问某个变量时,优先在自己方法中寻找,如果找的到,就用自己方法的变量。如果找不到,就到自己所在类中找,找到了,就用,找不到,到这个类所在的父类找,找到,就使用,找不到,到父类的父类进行查找,由于所有的类的顶层类是Object,所以Object中如果没有,编译报错。
2 发现一个问题,成员变量和局部变量同名时,默认在方法中访问局部变量,为了解决这个问题,可以使用关键字this; 通过this.成员变量名进行区分 this表示当前对象
3 this 中文含义: 表示一个对象 ,这个对象就是调用当前方法的对象。
匿名对象的理解和使用
1 匿名:没有名字,匿名对象:没有名字的对象
2 如何创建一个匿名对象:
new 类名(); //这样创建的就是匿名对象
3 匿名对象使用的场景:
1 如果创建一个对象之后,只用它调用了一次,就可以使用匿名对象的方式访问,使用匿名对象更加节省内存。
2 可以作为某个方法的实参,当做参数传递引用
@Test
public void test02() {
new Person().print();
}