Java核心——面向对象

Java核心——面向对象

一、面向对象思想

1、面向对象思想概述

在我们敲代码的过程中,首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。
那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。面向过程的代表语言就是C语言。

​ 当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。面向对象思想特点:是一种更符合我们思想习惯的思想,可以将复杂的事情简单化将我们从执行者变成了指挥者,角色发生了转换。

​ 面向对象特征有:封装(encapsulation)、继承(inheritance)、多态(polymorphism),面向对象开发就是不断的创建对象,使用对象,指挥对象做事情。

二、类的概述

1、类的概述

​ 类是一组相关的属性和行为的集合,定义类其实就是定义类的成员(成员变量和成员方法);对象就是该类事物的具体体现。举例说明:如果花是一个类,那么百合就是一个对象,花所具备的属性和功能百合也具备。

2、类的定义

class Student {
    public String name="小明";
    public int age=20;
    public void show(){
        System.out.println( name + "---" + age );
    }
}

四、类与对象

​ 我们描述现实世界中的事物会怎样去描述呢?比如说描述一个学生事物,那么我们会想到姓名 , 年龄 , 性别,还有学习 , 吃饭 , 睡觉等等,那么姓名,年龄,性别是我们的一种属性,而学习,吃饭,睡觉使我们作为学生共有的行为,那么,什么是属性呢,什么又是行为呢?属性就是该事物的描述信息,而行为就是该事物能够做什么。
我们学习编程语言,就是为了模拟现实中的事物,我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。由此我们就得到了现实中的事物和类的对应关系。

    事物		                类
	属性	----------------- 成员变量
	行为	----------------- 成员方法

​ 类其实就是一组相关的属性和行为的集合,而对象是该类事物的具体体现。

​ 举个例子,比如学生类如何使用:

A:文件名问题
	在一个java文件中写两个类:一个基本的类,一个测试类。
	建议:文件名称和测试类名称一致。
B:如何使用呢?
	创建对象使用。
C:如何创建对象呢?
	格式:类名 对象名 = new 类名();
D:如何使用成员变量呢?
	格式:对象名.变量名
E:如何使用成员方法呢?
	格式:对象名.方法名(...)

​ 面向对象是对方法中的参数有何影响呢?
​ 形式参数有基本类型和引用类型。基本形式参数的改变不影响实际参数引用类;引用类型的形式参数的改变直接影响实际参数。如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。

五、成员变量与局部变量的区别:

成员变量与局部变量的区别:

(1)在类中的位置不同。成员变量定义在在类中方法外;而局部变量定义在方法中或者方法声明上,其中定义在方法声明上的变量称为形参。

(2)在内存中的位置不同。成员变量存储在堆内存;局部变量存储在栈内存。

(3)生命周期不同。成员变量会随着对象的创建而存在,随着对象的消失而消失;而局部变量会随着方法的调用而存在,随着方法的调用完毕而消失

(4)初始化值不同。成员变量是有默认初始化值的;而局部变量是没有默认初始化值的,必须定义,赋值,然后才能使用。

class Student {
    public String name;//成员变量
    public int age;//成员变量
    public void show(String name,int age){
        System.out.println( name + "---" + age );
        //定义局部变量进行传参
    }
}

六、匿名对象

​ 匿名对象就是没有名字的对象。使用匿名对象的场景:在我们仅仅只调用一次方法的时候可以使用匿名对象,还有一种场景就是在匿名对象作为实际参数传递的时候可以使用。

例如:创建一个老师类

class MyTest {
    public static void main(String[] args) {
        //创建实例对象
        Teacher teacher = new Teacher();
        //实例对象调用方法
        teacher.show();
        //创建匿名对象
        new Teacher();
        //匿名对象调用方法
        new Teacher().show();
        //每new一次就是一个对象
        new Teacher().show();
        //匿名对象调用成员变量
        int num = new Teacher().num;
        System.out.println(num);
    }
}

猜你喜欢

转载自blog.csdn.net/changjinfeng123/article/details/89206662