一个Java类带你面向对象入门

前言

1)面向对象是一种设计模式,如果你需要设计一个东西,就可以先抽象为一个类。
2)例如设计一辆车,你需要设计车的静态特征:轮子、方向盘、发动机等等;你需要设计车的动态行为:启动车、加速、减速等。
3)一个Java类带你入门面向对象。

一、面向过程与对象

1)区别
面向过程:一种执行模式,按一定步骤去执行。如造车,装车骨架、装发动机、装方向盘等等。
面向对象,一种设计模式,设计需要先抽象,再创新。如造车,轮子、发动机…

2)联系
两者相互协作,通过面向对象设计物体,再通过面向过程完成目的。如先设计车,再造车。(宏观上面向对象的设计,微观上面向过程的执行。)

二、面向对象三要素

1)静态特征
对物体特征的抽象过程,向上抽象出物体共同特征。
2)动态行为
对物体行为的抽象过程,向上抽象出物体共同行为。
3)构造器
抽象对应具体,类是一个抽象的过程,将类实例化就是一个具体的过程,该过程称为构造对象,需要构造器,构造器主要功能就是初始化值。在new 构造器时就创造好了对象,用this指针指向它,然后构造函数里面再初始化。

A、一个类认识面向对象

package com.xhu.java;

import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 一群学生抽象出来的学生类,抽象就是一个向上找描述物体的框架过程。
 */
public class Student {
    /**
     * 第一部分,一群物体抽象出来的静态特征,它们的公共特征。对一群物体观察得越仔细,抽象出来的静态特征越多。
     */

    public String idCard;//每个学生都有身份证号码
    public String name;//每个学生都有姓名
    public Date birth;//每个学生都有出生时间

    /**
     * 第二部分,一群物体抽象出来的动态行为,它们的公共行为。对一群物体观察得越仔细,抽象出来的动态行为越多。
     */

    public void eat() {//每个学生都有吃饭的行为。
        //面向过程去编写吃饭这个行为。
        System.out.println("洗手");
        System.out.println("吃饭");
        System.out.println("洗碗");
    }

    public void sleep() {//每个学生都有睡觉的行为。
        //面向过程去编写睡觉这个行为。
        System.out.println("洗漱");
        System.out.println("上床");
        System.out.println("睡觉");
    }

    /**
     * 这是动态行为跟静态特征关联协作的地方。
     */
    public void updateName(String name) {//每个学生可以修改他的名字
        this.name = name;
    }

    /**
     * 第三部分,构造器,向上的过程为抽象,向下的过程就是具体。比如来了一个新同学,一个真实的学生,此时就需要把他实例构造出来。
     */
    public Student(String idCard, String name, Date birth) {//构造一个真实的对象,对他的基本特征设定一个具体的值
        this.idCard = idCard;
        this.name = name;
        this.birth = birth;
    }
    /**
     * 实例化对象,Java要求所有函数写入类之中,写一个该类的入口函数(该函数属于类,所以应该是static)main函数。(run一个类,必须要有入口函数main)
     */
    public static void main(String[] args) {
        //通过new构造器来向下构造一个具体的对象
        Student s = new Student("111111111111","Jack马", new GregorianCalendar().getTime());
        //1.吃饭
        s.eat();
        //2.睡觉
        s.sleep();
        //3.去公安局改个名字
        s.updateName("pony马");
        //4.看看自己的新名字
        System.out.println(s.name);
    }
}

在这里插入图片描述

三、构造器

1、形式

public[private] ClassName(){
}

2、四要素

1)通过new关键字调用。
2)构造器是特殊函数,无返回值,但是可给对象的成员变量初始化。不能显示定义返回类型,也不能return this,只可以用return结束函数,一般省略。
3)没有构造器,则编译器定义无参构造函数,若自己显示定义,则编译器不再提供。
4)构造器方法名必须与类名一致。

3、重载

根据实际参数需要进行函数重载。

/**
     * 第三部分,构造器,向上的过程为抽象,向下的过程就是具体。比如来了一个新同学,一个真实的学生,此时就需要把他实例构造出来。
     */
    public Student(String idCard, String name, Date birth) {//构造一个真实的对象,对他的基本特征设定一个具体的值
        this.idCard = idCard;
        this.name = name;
        this.birth = birth;
    }
    public Student(){
        
    }

总结

1)面向对象与过程,设计模式与执行模式。
2)面向对象三要素,如何抽象与具体?

参考文献

[1] 尚硅谷Java SE–高淇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值