黑马程序员技术交流社区

标题: 简单分享java基础11天笔记之七 [打印本页]

作者: 易大帅    时间: 2017-3-11 11:34
标题: 简单分享java基础11天笔记之七
第七天面向对象编程!!!!!  重中之重,,切记切记!!!!!

第七天
千里之行始于爪,没错就是爪!!!!!!!!!!!

###面向对象概述并举例说明
* 面向过程 强调过程,执行者,强调的是功能行为
* 面向对象 强调对象,指挥者,将功能封装进对象,强调具备了功能的对象。
* 面向对象举例
    * 煎饼果子     
* 面向对象思想的特点
    * A:它是一种更符合人们思考习惯的思想
    * B:它使复杂的内容简单化
    * C:它使我们从执行者变成了指挥者
* 面向对象的特点
    * A:封装
    * B:继承
    * C:多态
* 开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
###类和对象的关系
* 使用计算机语言就是不断的在描述现实生活中的事物。
* java中描述事物通过类的形式体现,类是一组相同属性行为的对象的抽象。
* 对象即是该类事物实实在在存在的个体。
*
        举例:
        人就是一个类(是把每一个相同属性行为的对象进行抽取)
        人的属性:姓名,年龄,身高,体重等
        人的行为:吃饭,睡觉,说话,跑,跳等
        而我们就是对象(是实实在在存在的个体),具体每个人叫什么名字,年龄多大,身高多高,体重多重等,吃饭怎么吃,睡觉怎么睡,说话怎么说等
        描述任意一类事物就是在描述他的属性和行为
        分析这句话的属性和行为:
        上得了厅堂,下得了厨房,写得了代码,查得出异常,杀得了木马,翻得了围墙(黑客技术),开得起好车,买得起新房,斗得过二奶,打得过流氓。
* 如何创建对象
* (1)类 对现实世界中事物的描述(成员变量和方法)
* (2)对象 现实世界中实际存在具体的个体
* (3)对象的使用以及内存图 new
*
        class Person {
            String name;
            int age;
            public void speak() {
                System.out.println("我的姓名是:" + name + ",我的年龄是:" + age);
            }
        }
###对象的内存图
* 看图说话
###成员变量和局部变量
* (1)作用范围
    * 局部变量:方法内public void method(String name) {}
    * 成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}
* (2)存储空间
    * 局部变量:栈内存
    * 成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}
* (3)初始化值
    * 局部变量:在使用前必须手动给值
    * 成员变量:jvm默认初始化值。int 0 byte 0 short 0 long 0 double 0.0 boolean false char '\u0000'
*

        class Person {
            int num = 10;
            public void method(){
                int num = 20 ;
                System.out.println(num);
            }
        }


   
###匿名对象
* (1)当对对象中的功能只执行一次的时候使用。否则,请你使用有名字的对象。
*
        Person p = new Person();
        p.show();
        p.show();
        new Person().show();
        new Person().show();
* (2)用于作为实际参数进行传递。
*
        Person p = new Person();
        method(p);
        method(new Person());
        public static void method(Person p){}
* (3)是否可以用匿名对象调用属性,是否有意义?
###封装
* (1)封装的好处:便于重复使用,安全性高。
* (2)private权限修饰符
*
        class Demo{
            private int age;//把属性私有对外提供公共的访问方法,可控性提高了
        
            public void setAge(int age){
                if(age>0 && age<=200){
                    this.age = age;
                }else {   
                    System.out.println("请回火星");
                }
            }

            public int getAge(){
                return age;
            }
            /*
            设置是setXxx要传参数
            获取是getXxx要返回值类型,返回值类型和属性一致
            */
        }
        class DemoTest{
            public static void main(String[] args) {
                Demo d = new Demo();
                d.setAge(-20);
                System.out.println(d.getAge());
            }
        }
###this关键字及其使用场景
* (1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。
* (2)什么时候使用this呢?
    * A:当局部变量和成员变量重名的时候,可以用this进行区分。
    * B:this调用成员方法
    * C:构造函数中使用this
        * this() 必须放在第一行。
*     
        同下面的道理:
        Person(String name){
            this.name = name;
            System.out.println("有一个参数的构造函数");
        }
   
        Person(String name,int age){
            
            this("张三");
            this.name = name;
            this.age = age;
            System.out.println("有两个参数的构造函数");
        }
        Person p = new Person("lisi",20);
        Person p2 = new Person("wangwu");

oop.png (54.08 KB, 下载次数: 15)

oop.png

作者: 时光未桀    时间: 2017-3-11 12:25
感谢分享

作者: yuanpeng    时间: 2017-3-11 12:44
这是哪个老师的课,很好啊


作者: 雪飞舞舞    时间: 2017-3-12 00:40
学习学习

作者: 易大帅    时间: 2017-3-13 11:01
雪飞舞舞 发表于 2017-3-12 00:40
学习学习

互相学习

作者: ciying88    时间: 2017-3-14 16:21
不错不错.
作者: 易大帅    时间: 2017-3-14 18:24
ciying88 发表于 2017-3-14 16:21
不错不错.

谢谢鼓励

作者: zhao543    时间: 2017-3-14 19:27
感谢分享





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