Java面向对象编程系列之第一章 Java8面向对象编程

一、主要内容

    1-1 面向对象简介

    1-2 类与对象的定义

    1-3 类与对象的基本使用

    1-4 对象内存分析

    1-5 引用传递初步

二、分块介绍

2-1 面向对象简介

    软件开发模式包括:面向过程 与 面向对象。

    面向过程指的是 只完成自己所需要的操作,但是这种设计缺乏可维护性。

    面向对象本质来讲 是一种组件化(模块化)设计,且便于代码的局部维护。但是,模块化设计的要求规范比较多。也就是说,模块化设计最为重要的是标准,以及整个项目的把控。
 

扫描二维码关注公众号,回复: 2221703 查看本文章

面向对象的特点:

    封装性:保护内部的操作对外部不可见;

    继承性:相当于一代代的传承;

    多态性:在一个范围内定义的改变;

面向对象开发的三个阶段:

    OOA:面向对象分析;

    OOD:面向对象设计;

    OOP:面向对象编程;

2-2 类与对象的定义

    真实存在的可以使用的就是对象,而定义概念的就是类。例如:人是一个类,而具体的人,如张三,李四等就属于对象。

2-3 类与对象的基本使用

    定义类可以使用class关键字来描述,且类主要由 属性(变量) 与 方法 组成。类的定义案例如下:

class Person{ // 类名称:Person

    String name; // 属性:name

    int age; //属性: age

    public void tell(){ // 方法:tell()

        System.out.println("姓名:"+name+"年龄:"+age);

    }

}

    类需要通过对象来调用。调用案例如下:

public class mainDemo{

    // 定义对象方法1
    Person per = new Person();

    // 定义对象方法2
    Person per = null;
    per = new Person();

    // 给属性传值

    per.name = "张三";
    per.age = 20;
    // 调用tell()
    per.tell();

}

2-4 对象内存分析

public class mainDemo{

    // 定义对象方法1
    Person per = new Person();

    // 给属性传值

    per.name = "张三";
    per.age = 30;
    // 调用tell()
    per.tell();

}

    上述代码的内存分析如下:

public class mainDemo{

    // 定义对象方法1
    Person per = null;

    per = new Person();

    // 给属性传值

    per.name = "张三";
    per.age = 30;
    // 调用tell()
    per.tell();

}

    上述代码的内存分析如下:

public class mainDemo{

    // 定义对象方法1
    Person perA = new Person();

    Person perB = new Person();

    // 给属性传值

    perA.name = "张三";
    perA.age = 30;

    perB.name = "李四";
    perB.age = 10;
    // 调用tell()
    per.tell();

}

    上述代码的内存分析如下:

注意:

public class mainDemo{

    // 定义对象方法1
    Person per = null;

    // 给属性传值

    per.name = "张三";
    per.age = 30;
    // 调用tell()
    per.tell();

}

    上述代码中的per没有指向对内存空间,因此,编译通过,但执行的时候报错“NoPointerException”错误。

2-5 引用传递初步

代码1:

public class mainDemo{

    // 定义对象方法1
    Person perA = new Person();

    // 给属性传值

    perA.name = "张三";
    perA.age = 30;
    Person perB = perA;
    // 调用tell()
    perB.tell();

}

代码1的引用传递关系图:


代码2:

 

public class mainDemo{

    // 定义对象方法1
    Person perA = new Person();
    Person perB = new Person();

    // 给属性传值

    perA.name = "张三";
    perA.age = 30;
    perB.name = "王五";

    perB.age = 10;

    perB = perA;

    perB.name = "赵六";
    // 调用tell()
    perB.tell();

}

代码2的引用传递关系图(perB之前指向的堆内存空间目前无任何栈内存指向,因此变为垃圾空间。在一定时间内,会被GC(Garbage Collector)回收):

猜你喜欢

转载自blog.csdn.net/guxunshe5199/article/details/81082698
今日推荐