第十二天学习Java(面向对象)

2、2面向对象和面向过程

    面向对象(OOP)

        不是一种语言,而是一种思想

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

    对象

        方向

        程序

        面向过程:

        关注点在过程上(步骤)

            Step1,step2,step3

            综合分析,按照步骤实现即可

            面向对象

            关注点在对象上

            万事万物都是对象

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

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

                    外部特征:静态属性

                    动作行为:动态属性

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

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

                类的堆砌

2、3类和对象

    类:其实知道就是类别,对同一类事务的统称,对这类事务进行描述,---》创建class

        就是一个概念

    对象:

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

        如何定义一个类?

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

                变量就可以。

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

                方法就可以

2、4Java中定义类的格式

    /*

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

        //属性描述:外部特征

        //行为描述:能做什么

        }

    */

    要求:

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

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

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

                不要加static

    2.4.1step1声明类

        public class Person{//类的名字

        }

    2.4.2声明类中的成员变量【成员变量】

        //step2:成员变量

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

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

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

    2.4.3成员方法

        //step3:成员方法

            public void eat() {

            System.out.println("吃饭了");

            }

2.5类的对象

    2.5.1创建类的对象

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

            /*

            new关键字

            词义:新的,新建

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

            */

            Scanner sc = new Scanner()

        语法结构

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

                step1:创建类

                step2:根据类,实例化对象

    2.5.2通过对象访问属性

        /*

            int[] arr=new int[5];

            获取数组的长度

            arr.length

            arr的长度

        */

        对象访问

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

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

                p1.name="王二狗";

                p1.age=18;

                p1.sex='男';

            //获取对象的属性值

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

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

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

    2.5.3通过对象访问方法

        /*

            Scanner sc = new Scanner();

            sc.nextInt();

     */

        Scanner就是一个class一个类

        sc.是根据scanner创建处理啊的一个对象

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

        对象. 方法名();

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

            p1.eat();

            p1.sleep();

            p1.dadoudou();

        方法:public void test();

            对象.test1();

2.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);

        }

    }

内存分析图:


三、总结

    1、面向对象:一种编程思想。

    2、面向对象的两大核心概念:类和对象

    3、类?

        概念:同一类事物的统称。类别,下个定义。

        描述一个类:

        静态属性:成员变量:这个类别有哪些外部特征。(名词)

        动态属性:成员方法:这个类别有哪些行为功能。(动词)

    4、对象?

        就是类中的一个具体的实例。

        将类进行实例化--->得到了对象

        将对象的共同特征进行抽取,加以描述--->对应的就是类。

    5、语法:

        step1:定义一个类

            /*

            public class 类名{

            //成员变量

            //成员方法:不加static

            }

        */

    public class Person{

            //成员变量

            String name;

            int age;

            char sex;


            //成员方法

                public void eat(){}


                public void sleep(){}

        }

        step2:根据类,创建对象。(将类进行实例化,得到对象)

            /*

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

            */

            public static void main(){

            Person p1 = new Person();

            }

        step3:对象访问类中的属性和方法

            /*

                .用来表示访问

                对象.属性

                对象.方法();

            */

            public static void main(){

            Person p1 = new Person();

            p1.name = "王二狗";//赋值

                System.out.println(p1.name);//取值

                p1.eat();//对象访问方法,将这个方法调用执行。

    }

    6、内存分析:

        对象创建:

            Person p1 = new Person();

            //=左边,对象的声明,开辟栈内存

            //=右边,有new,开辟堆内存,创建对象,将对象的内存地址,给p1

            //结论:p1是Person类型的对象,属于引用类型,存储的都是对象的内存地址。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 生活中什么是面向对象 洗衣服,吃饭 面向过程:关注点是过程 ————站在一个执行者的角度去考虑事情,做事情 /...
    4d5b10d2437f阅读 92评论 0 0
  • day12——面向对象 一、上周知识点回顾 1、分支、循环语句 if语句,switch语句 for语句,while...
    机会留给有准备的人阅读 224评论 0 0
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 771评论 0 1
  • DAY 05 1、 public classArrayDemo { public static void mai...
    周书达阅读 649评论 0 0
  • 对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次。而在a...
    WANKUN阅读 254评论 0 2