黑马程序员技术交流社区

标题: <学习经历> [打印本页]

作者: 黑马程序猿_    时间: 2019-4-4 09:40
标题: <学习经历>
1.面向过程和面向对象(了解)
        面向过程是什么?
                比如说,我们想要完成某一个大型的项目,但是呢,想要完成这个大项目得需要三个功能块(三个方法)组合在一起共同完成这个项目。
                我们要做的事情,首先,就是我们要专心的把每一个功能做好,然后组合在一起才能够完成这个大项目。那里面我们重点关注的就是方法,
                认真的完成每一步才可以。这就是面向过程的思想,面向函数。

        面向对象是什么?
                比如说,我们想要完成某一个大型的项目,但是呢,想要完成这个大项目得需要三个功能块(三个方法)组合在一起共同完成这个项目。
                但是,我们换了一种思想,我们不自己去做每一个方法,我们找了一个对象,这个对象它具备三个功能,也就意味着这一个对象就能够
                帮助我们完成这个项目,在这里,我们重点关注的就是这个对象,这就是面向对象的思想

        面向对象和面向过程的关系?
                面向对象基于面向过程,是建立在面向过程基础之上

        面向对象的好处是什么?
                它是一种更符合我们人类思考习惯的思想
                它可以将复杂的事情简单化
                它可以将我们程序员从执行者变成了指挥者

2.类和对象
        什么是类?
                官方:类是事物的属性和行为的集合,是一个抽象的概念
               
                我们想要知道java中的类是什么,那我们就要先知道咱们现实生活中类是什么,因为java源于生活,那现实生活中的类是什么?
                通过查看百度百科,我们知道了,类是许多相似或相同事物的综合,具有共同特征的事物所形成的种类。如果你还不理解,
                那你可以问题自己一个问题,你为什么是人"类",因为我们具备相同或者相似的特性,比如说,我们都有两个耳朵,两个眼睛,都有头发,
                都有嘴巴,我们都名字,年龄,性别,血型,星座等等,我们都有吃,喝,拉,撒,睡,dbj等功能。

        什么是对象?
                官方:对象是类的具体的存在,体现

                如果那人类这个类为例的话,那对象就是你,我,他,每一个人,每一个实例,个体

        怎么写一个类?
                定义类,要用关键字class

                假设我们要描述"人类"

                class Person {
                        //属性:事物的外在特征
                        String name;
                        int age;
                        String sex;
                        String xingzuo;
                        String xuexing;

                        //行为:事物的具备的功能
                        public void eat() {
                                System.out.println("吃");
                        }

                        public void drink() {
                        
                        }

                        public void la() {}
                        public void sa() {}
                        public void sleep() {}
                        public void dbj() {}
                }

                我们要描述"猪类"
               
                class Pig {
                        //属性
                        String name;
                        int age;

                        //行为
                        public void sleep() {}
                        public void eat() {}
                        public void gong() {}
                }


        怎么使用一个类?
                我们想要使用一个类,就要创建该类的对象,我们要去使用这个对象

                创建对象的格式?
                        类名 变量名(对象名) = new 类名();

                        Person person = new Person();
                        Pig pig = new Pig();

                        我们怎么使用对象里的属性(成员变量)呢?
                                类名.属性名
                                person.name = "张三";
                                person.age = 18;
                                person.sex = "男淫";
                                person.xingzuo = "处女座";
                                person.xuexing = "A型";

                                System.out.println(person.name);

                        怎么使用对象里的行为(成员方法)?
                                类名.方法名();

                                person.eat();
                                person.drink();

3.成员变量和局部变量
        什么是成员变量?
                定义在类中,方法外的变量就是成员变量
        
        什么是局部变量?
                定义在方法中,或者方法的声明上的变量就是局部变量

        这哥俩的区别?
                定义位置不同:
                        局部变量:定义在方法中,或者方法声明上
                        成员变量:定义在类中,方法外

                内存存储位置不同:
                        局部变量:由于是在方法中,所以存储的位置和方法是一致的,也就是在栈内存中的方法中,所以它的声明周期随着方法的存在而存在,随着方法的消失而消失
                        成员变量:存储在堆内存中的对象中,所以它的声明周期是随着对象的存在而存在,随着对象的消失而消失

                初始化值不同:
                        局部变量:没有默认初始化值,不赋值就使用会报错
                        成员变量:有默认的初始化值

4.封装
        什么封装?
                封装是隐藏对象的属性和实现细节,仅对外提供公共的访问方式

        封装的好处是什么?
                提高了安全性

        如何隐藏对象的属性和实现细节呢?
                只需要在属性的前面加上一个新学习的关键字private即可

        如何对外提供公共的访问方式?
                写两个方法,一个方法是专门给属性赋值的setXXX,一个方法是专门获取属性值的getXXX

5.private关键字
        什么是private关键字?
                private关键字是一个修饰符,它代表私有的意思,可以修饰成员变量(属性)和成员方法(行为)
               
        private关键字的特点?
                被private关键字所修饰的成员变量和成员方法只能在被类中访问,不能在其他类中访问

        注:private仅仅是封装的一种体现,方法也算是一种封装

6.this关键字
        什么是this关键字?
                this关键字代表对象的引用,代表哪一个对象的引用呢?哪一个对象调用this所在的方法,this就代表哪个对象
        this的作用是什么?
                解决了同名的局部变量隐藏了成员变量的问题
7.构造方法
        什么是构造方法?
                方法的名字和类名是一样的,方法的格式和普通方法的格式不一样的特殊的方法 就是构造方法
        构造方法的作用?
                用来创建对象的
                给对象的属性进行初始化的
        构造方法的格式?
                修饰符 类名() {
                        XXXOOO;
                        return;
                }
        我们在使用构造方法的时候需要注意哪些问题?
                如果我们没有手动去写构造方法的话,系统会自动给我们带一个无参数的构造方法
                如果我们手动写构造方法的话,系统默认带的无参数的构造方法就没有了

                既然构造方法也是方法,所以它也遵循方法的重载规则
                public Person() {}
                public Person(String name) {}
                public Person(int age) {}
                public Person(String name, int age) {}
                这些都可以构成方法的重载




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2