JAVA入门小小白学习中ing(面向对象(类和对象,java中定义类的格式,类的对象))

小猪学习

小小白慢慢学习中ing 第十天

努力努力


本日内容(面向对象初识)

1、生活中什么是面向对象

洗衣服,吃饭

面向过程:关注点是过程 ————站在一个执行者的角度去考虑事情,做事情

    //step1.找个盆

    //step2.收集要洗的衣服

    //step3.放水,放洗衣粉。。

    //step4:洗一洗

    //step5:晒一晒

面向对象:关注点是对象 ————站在指挥者的角度

    //step1:找个对象

    //step2:让他洗衣服

生活中的面向对象:找合适的人,做合适的事儿。。

生活中的面向过程:亲力亲为,按照流程步骤来,一步一步,吭哧吭哧。。。

代码中:

    Arrays类

        sort();-->排序

        binarySearch();-->搜索

    Scanner类

        sc.nextInt();

        sc.next();

        sc.nextDouble();

2、面向对象和面向过程

面向对象:(OOP)

    不是一种语言,而是一种编程思想。

面向对象程序设计:(Object Oriented Programming)

        Object:对象

        Oriented:方向,定向

        Programming:程序

面向过程:

        关注点在过程上(步骤)

        step1,step2,step3.。。。。

        总和分析,按照步骤实现即可。

面向对象:

        关注点在对象上,

        万事万物皆对象。

        A:分析当前的问题域中所涉及的对象。

        B:这些对象有什么样的特征和功能。

                外部特征:静态属性

                动作行为:动态属性

        C:对象和对象之间的关系。

                继承关系,聚合关系,关联关系。。。

                类的堆砌。

3、类和对象

类               |          对象

人类:                    Person钟南山院士,你,我,王二狗,李小花,袁隆平爷爷,马云爸爸。。

狗类:                    幻影,忠犬八公,二哈,啸天

猫类:                    嘟嘟,卡卡,你家的猫,姥姥家的白猫

汽车类:                 我的黑色的长城车,58台红旗车,撞我的那台车。。

笔记本电脑类:      我现在用的这个电脑15寸的pro,王二狗的华硕,你媳妇的联想

手机类:                 我的华为Mate30,你的小米mix2s,你媳妇用诺基亚n95

类:其实指的就是类别。对同一类事物的统称。对这类事物进行描述,--->创建class

        就是一个抽象的概念。

对象:

        类中的一个具体的实例,客观存在的,能用。个体。

如何定义一个类?

        要有能够描述这一类别的外部特征——我们叫做属性(静态属性)

变量就可以。(名词)

        要有能够描述这一类别的行为功能——我们叫做方法(动态属性)

方法就可以。(动词)

4、Java中定义类的格式

/*

class ClassName{//类名首字母大写

//属性描述:外部特征

//行为描述:能够干啥

}

*/

要求:

   1、CLassName要求符合驼峰命名法,首字母大写,见名知意。

   2、属性描述:外部特征,用于描述这个类别的一些特征,而这些特征通过一个"词"来描述清楚,比如姓名,年龄。使用变量来表示。——【成员变量】Field,词义"字段"

   3、行为描述:能够干啥,用于描述这个类别的一些行为功能,而这些行为功能,是一个动作行为,比如吃饭,睡觉。使用方法来表示。——【成员方法】Method,词义"方法"

  不要加static。

方法:就是一段具有独立功能的代码。

4.1 step1声明类

public class Person{//类的名字

}

4.2 step2声明类中的【成员变量】

public class Person {

        //step2:成员变量

        String name;//使用String类型的变量name,表示人类中的姓名

        int age;//使用int类型的变量age,表示人类中的年龄

        char sex;//使用char类型的变量sex,表示人类中的性别

}

4.3 step3声明类中的【成员方法】

public class Person {

        //step2:成员变量

        String name;//使用String类型的变量name,表示人类中的姓名

        int age;//使用int类型的变量age,表示人类中的年龄

        char sex;//使用char类型的变量sex,表示人类中的性别

        //step3:成员方法

        public void eat(){

                System.out.println("吃饭啦。。");

        }

        public void sleep(){

                System.out.println("睡觉啦。。");

        }

        public void daDouDou(){

                System.out.println("打豆豆。。。");

        }

}

​5、类的对象

5.1 创建类的对象

创建对象,也叫做类的实例化。对象,也叫类的实例。

/*

new关键字

new,词义:新的,新建

new 关键字,专门用于新建对象。

*/

Scanner sc = new Scanner();//Scanner也是个类,Person也是个类。

int[] arr = new int[5];

语法结构:

        /*

        类名 对象名 = new 类名();

        */

step1:创建类

step2:根据类,实例化对象

5.2通过对象访问属性

/*

int[] arr = new int[5];

获取数组的长度:

arr.length

arr的长度

*/

对象访问属性的语法:就是一个.

//给对象的属性,进行赋值

p1.name = "王二狗";//给p1这个对象的name属性进行赋值

p1.age = 18;

p1.sex = '男';

//获取对象的属性值

System.out.println("姓名:"+p1.name);

System.out.println("年龄:"+p1.age);

System.out.println("性别:"+p1.sex);

5.3通过对象访问方法

/*

Scanner sc = new Scanner();

sc.nextInt();

*/

Scanner,就是一个class,一个类

sc,是根据Scanner创建出来的一个对象

对象调用类中的方法,语法,也是.

对象.方法名();

        p1.eat();

        p1.sleep();

        p1.daDouDou();

方法:public void test1();

对象.test1();

6、 内存分析

实例代码:

package com.qf.demo01;

public class Test1Person {

        public static void main(String[] args) {

                //step1:创建Person类的对象

                //语法:类名 对象名 = new 类名();

                Person p1 = new Person();

                System.out.println(p1);//打印p1的值,p1是引用类型,打印都是p1指向的对象的地址。

                System.out.println(p1.name);

                System.out.println(p1.age);

                System.out.println(p1.sex);

                /*

                * com.qf.demo01.Person@15db9742

                * 包名.类名@编码值 ---->理解为p1的内存地址。

                * java中的数据类型:

                * 基本类型:byte,short,char,int,long,bolean,float,double

                * 引用类型:

                * 数组,类类类型

                */

                //step2:通过对象访问属性,语法是.

                //给对象的属性,进行赋值

                p1.name = "王二狗";//给p1这个对象的name属性进行赋值

                p1.age = 18;

                p1.sex = '男';

                //获取对象的属性值

                System.out.println("姓名:"+p1.name);

                System.out.println("年龄:"+p1.age);

                System.out.println("性别:"+p1.sex);

                //step3:通过对象,访问成员方法--->理解为就是对象调用成员方法

                p1.eat();

                p1.sleep();

                p1.daDouDou();

        }

}

内存分析图:

示例代码:

package com.qf.demo01;

public class Test2Person {

​        public static void main(String[] args) {

                //1.创建一个Person类的对象

                Person p1 = new Person();

                System.out.println(p1);//p1的内存地址:com.qf.demo01.Person@15db9742

                p1.name = "张三狗";

                p1.age = 19;

                p1.sex = '男';

                System.out.println(p1.name);//张三狗

                System.out.println(p1.age);//19

                System.out.println(p1.sex);//男

                //2.再创建一个Person类的对象

                Person p2 = new Person();

                System.out.println(p2);//p2的内存地址,com.qf.demo01.Person@6d06d69c

                p2.name = "李小花";

                p2.age = 17;

                p2.sex = '女';

                System.out.println(p2.name);//李小花

                System.out.println(p2.age);//17

                System.out.println(p2.sex);//女

                //3.

                Person p3 = null;//仅仅声明了Person类型的对象p3,但是实际上,

                                           //并没有在堆内存中,创建出   真正的对象。

                /*

                * NullPointerException,空指针异常

                *

                * 对象不存在,就是个null,

                 * 强行的访问对象的属性或调用方法,就会空指针异常。

                */

                //System.out.println("---->"+p3.name);//报错啦:NullPointerException

                p3 = p1;//将p1的值(p1对象的内存地址),赋值给p3,

                            //结果-->p1和p3存储的是同一个对象的内存地址。

                p3.name = "李铁柱";

                System.out.println(p1.name);//李铁柱

                System.out.println(p2.name);//李小花

                System.out.println(p3.name);//李铁柱

                Person p4 = new Person();

                System.out.println(p4);//?

                p4.name = "王二丫";

                p4.age = 18;

                p4.sex = '女';

                System.out.println(p4.name );

                System.out.println(p4.age);

                System.out.println(p4.sex);

                p4 = p1;//改变对象的内存地址了,就不再指向原来的内存对象。

                System.out.println(p1.name);

                System.out.println(p3.name);

                System.out.println(p4.name);

        }

}

内存分析图:




希望我能坚持住每天坚持记录着 ...

你可能感兴趣的:(JAVA入门小小白学习中ing(面向对象(类和对象,java中定义类的格式,类的对象)))