黑马程序员技术交流社区

标题: day06JAVA笔记 [打印本页]

作者: 仙兒哥    时间: 2013-4-10 02:21
标题: day06JAVA笔记
面试1
怎么理解面向对象,符合人们现实中的思想 和面试现场的对象
面试就是面试官面向应聘者 企业一个项目面试官可以做但是费时
所以招一个具有专业素质的人这就是对象 面试官只要面对我 我返回结果就行了
不能光说万物皆对象要活用 结合场景

面试问道面向对象 一定会问面向对象的特征1封装2多态3继承

面试2
//基本数据类型参数传递
//引用数据类型参数传递
结果并画图

作业:举例体现封装的思想119

private    自己看得见自己
protected  和儿子一起洗澡
public     暴露狂

>什么是封装?
就是穿上衣服。

>为什么要封装?
有不想让人看到的地方。

>封装会带来哪些好处?
大家只会注意我长得怎么样,而不会在意我动过手术的刀疤。

>封装的作用是什么?
让大家只注意看应该看的。

>如何实现封装?
穿衣服


一 面向对象
1.1 面向对象和面向过程
1.1.1 面向过程       
对问题进行步骤的分析1,2,3,并通过具体的功能(函数进行分析),然后就按照步骤进行执行即可

举例
将大象装进冰箱里,面向过程思考方法:
                                                第一步,打开冰箱        void open()[]
                                                第二步,装入大象        void store()[]
                                                第三步,关闭冰箱        void close()[]

面向过程语言
basic:语言,VB:basic的可视化工具,C:       
1.1.2 面向对象
面向对象的思维方式将复杂事情简单化。将我们程序由原来的执行者变成了控制者

面向对象语言
c++:语言(不完全面向对象)
vc++:可视化的c++工具
c#:(完全面向对象 几乎跟JAVA差不多)
1.2.3 面向过程和面向对象的区别
                        面向过程和面向对象都是一种解决问题的一种方式
                                面向过程注重的是动作的执行,而面向对象的思维方式它注重的是实体
只要找到实体并赋予动作,想要操作时,只要找到实体就可以
                               
                                面向对象的思维方式将复杂事情简单化。
                                将我们程序由原来的执行者变成了控制者。
1.2 面向对象
1.2.1 面向对象概念
强调的问题领域中涉及的事物(实体),并分析事物中具备的属性和行为,将属性和行为都封装到一个具体的事物中
而这个事物我们称其为对象,哪个实体对功能更熟悉更擅长,这动作就赋予给谁,没有实体可以创建
1.2.2 面向对象思考过程
将大象装进冰箱里
                                操作的是谁?        是冰箱
                                打开功能,或者存数以及关闭功能,是不是冰箱的功能?        是的
                                那么就将这些功能都定义到冰箱这个事物当中
                                需要完成这个需求,只要使用冰箱中的功能即可
       
                                注意
1.面向过程和面向对象只是为了提高代码复用性
2.以前是面向整个过程,现在是面向具体的对象
3.将过程都封装到得对象中,只要找到对象,就可以使用对象中这些具体内容
1.3.3 面向对象名词分析法
                分析事物时找到名词,名词一般都会将其抽象成实体,动词一般都是动作
        例:人开门
                        实体:人,门
                        动作:开//当前动作赋予给谁取决于这个动作那个实体完成会更容易或更方便

           人扇扇子
                        实体:人,扇子
                        动作:扇//扇的动作时扇子,给人的话就是扇子不动人动,就凹凸曼了

           人修车
                        实体:人,车
                        动作:修//车的参数,零件自己最熟悉,非要把修的方法放入人中也可以但是麻烦,所以修的动作给车

                3.人使用ATM存取款与查看帐户。
                        实体: 人  ATM
                        动作: 存   取  查 (这些行为都是ATM)

开发的过程
其实就是不断的创建对象,使用对象,指挥对象做事情

设计的过程
                        其实就是在管理和维护对象之间的关系       
1.3.4 面向对象语言三个基本特征
                        封装  继承  多态

作者: 仙兒哥    时间: 2013-4-10 02:21
1.3.5 面向对象特点
                面向对象特点
                1.面向对象是一种符合人们思考习惯的思想       
                2.面向对象可以将复杂的问题简单化
                3.面向对象将执行着变成了指挥者
                       
一句话总结
有形和无形 万物介对象
1.3.6 面向对象好处
将复杂问题简单化,但是处理简单问题不要把简单问题复杂化,面向过程处理复杂问题比较难

举例
                                水果摊一开始要自己上货,卖水果,之后当老板了可以雇上货人,卖货人调用他们即可

二 类与对象
2.1 类的思考方式
在分析事物的时候,问题领域(需求),其实就是找出问题领域中涉及的对象

归纳一类事物,分析事物的方法
1.长什么样,通过外部特征                //但是,不能区分,比如人跟猴子长差不多
2.他所特有的功能,动作,行为        //这样就能具体区分人跟猴子了
2.1 类与对象
类(抽取)               
类就是将多个对象具备的共性进行抽取而来的,一个描述事物的方式
对事物进行总结得到一个抽象的概念,那么这个概念我们就叫它类
类是对象的蓝图

对象(类的实例化)       
对象就是当前这个概念中的一个具体实体,是java对具体生活中事物的描述
该事物实实在在存在个体,在计算机中该个体是通过new关键字建立的

举例
//汽车与图纸的例子???(视频5类与对象)
描述事物无非就是描述事物的属性和行为
class car
calss cardemo
//创建Car类的对象.创建对象必须用new关键字完成
//字符串功能在堆内存中 初始化值=null
//指数对象做事情格式: 对象.对象成员c.run()
//定义类就是在定义类中的成员

实际开发中,大部分情况下都是先有类再根据类,实例化出对象
该事物实实在在存在个体,在计算机中该个体是通过new关键字建立的                               
2.3 定义类
        class 类名{
               
                成员属性
                成员方法
        }
2.4 定义对象
格式
类名 对象名(引用名) = new 类名() ;       
创建内存图必会

举例
class Person                        //创建一个类,相当于创建了一种数据类型
{
        String name;
        int age;
        void 吃()
        {

        }

        public static void main(String[] args)
        {
                Person GB =new Person();//Person某某创建Person数据类型,右边可以看成赋值具体值
                Person HXY =new Person();//当我们创建这个类的对象时,就相当于创建了这个类型的一个数据
                System.out.println("Hello World!");
        }
}                                        //内存图中 堆内存中的叫对象,GB,HXY,P1是引用


2.5 怎样使用对象调用属性
        引用名(对象).属性                //GB.name
        引用名(对象).方法()                //GB.eat() 现在调用方法必须都用这种格式

        同一个类的对象,它们具有相同的成员属性,但是成员属性的值可能不同。
        调用的是哪个对象的成员属性就得到这个对象的成员属性。
       
//当创建一个类时,相当于创建了一种数据类型,一般叫类 类型(引用类型,除了4类8种都是引用类型)
        //当创建这个类的对象时,就相当于创建了这个类型的一个数据
        //实际开发中很多类型java是没有定义了,所以我们自己定义一个类具有属性,行为,我们在调用
        //我们真实使用的是对象(类是蓝图有了即可,我们用的还是具体的对象)

        姓名        String
        年龄        int
        吃                void ()//修饰符 返回值类型 方法名 (参数列表)

        class Person
        {
                public static void main(String[] args)
                {
                        String name;                        //成员变量,成员属性               
                        int age;                                //成员方法
                        void eat()
                        Person p1=new Pereon()  //真正的对象在堆内存中是 new Person,P1只是对象的引用(装的是对象的内存地址)
                                                                        //对象创建时,它有默认值,当我们通过.操作符进行操作,就是为其属性重新赋值
                        p1.age=20;//
                        System.out.println(p1.name)//
                }
        }
2.6 类中成员变量,局部变量概念
成员变量(成员属性)
        对应事物属性,定义在类中的变量

局部变量(成员函数)
        对应事物行为
2.7 类中成员变量,局部变量区别
1.在代码中的定义位置
成员变量:定义在类中
局部变量:定义在函数中或者语句中

2.在内存中的位置
成员变量:是创建对象时,才存在于对象中,而且在对内存中       
成员变量随着对象的加载而存在 随着对象的变垃圾而消失
当该变量所属的作用于结束,该变量就是放了

3.初始化值的区别:
成员变量:因为在对内存中,所以都有默认初始化值
局部变量:在定义是,如果要被使用,必须明确初始化值


成员变量和局部变量的区别
                1作用范围,成员变量在整个类内有效,而局部变量只在其方法内或流程语句中有效
                2初始值,成员变量如果没有对其进行初始化,会对其进行默认初始化,局部变量必须初始化才能使用
                3生命周期:成员变量的生命周期是与对象的生命周期一致,拒不变量使用完成后就消失
                4创建的位置:成员变量在堆内存中,局部变量在栈内存中
2.8 类与类之间的关系
依赖
A类成员变成B类对象
聚集
A方法使用了B类的对象
继承
                                后面讲

People
"成员属性是可以在下面方法用的"
2.9 匿名对象
Car c=new car();//匿名对象
匿名对象其实就是一种简化形式
当对对象的方法只调用一次时,可以使用匿名对象完成
匿名对象一般只调用方法 不调用属性
匿名对象可以作为实际参数进行传递

三 封装
3.1 封装概念
        是指隐藏对象的属性和细节,仅对外提供公共访问方式

        private
                        私有的,它是一个修饰符,可以修饰成员属性与成员方法法

        private举例
                        老师有钱,学生不能直接拿钱那就是抢钱啦
                        如果老师提供一个借钱的行为,学生调用即可

作者: 仙兒哥    时间: 2013-4-10 02:21
private好处
                        将变化隔离
                        便于使用
                        提高重用性
                        提高安全性
3.2 封装原则
                将不需要对外提供的内容都隐藏起来,隐藏对象的属性和实现细节,仅对外提供公共访问方式
凡是隐藏细节并提供访问方式的都是封装体(函数和类都是封装体)

一般是将成员属性private,对外提供getXxx() setXxx()方法
set方法是应该有参数的,它是用来接收信息进行复制
get方法是有返回值的,他的作用是让外部可以访问我们的成员属性
私有仅仅是封装的一种体现形式而已


命名规则
1.类名 首字母大小写,多个单词组成后面的单词首字母也大小写
2.变量名        "补充"
3.方法名        "补充:

封装好处
将变化隔离,便于使用,提高重用性,提高安全性)

四 构造函数
4.1 构造方法(构造函数)
        构造方法的作用
                        初始化对象
                        类名 引用明=new 构造方法()               

构造方法的格式
                        1.构造方法的名字必须与类名相同
                        2.构造方法不能有修饰符(static 权限修饰符除外 public private)
                        3.构造方法没有返回值类型void也没有

        构造方法的注意事项
                        如果一个类没有构造方法,那么当它加载时,JVM会为其分配一个默认空间的无参构造方法
                        但是如果我们手动去创建了一个构造方法,那么默认的就不会再创建
多个构造函数是以重载的形式存在的

                        //不带()是属性,带()是方法
                        //以后再开发中使用别人写的类时,需要查看其提供什么样的构造方法,才能通过构造=方法去市化对象

构造方法特点
1.函数名与类名相同
2.不用定义返回值类型
3.没有具体的返回值。

注意
1,运行
构造函数是在对象创建时,就自动被调用了
一般函数是对象创建后,才调用

2,次数
构造函数值在对象创建时调用一次,因为初始化动作只执行一次
一般函数是对象创建后调用而且可以被一个对象调用多次

如果对象以产生就需要完成一些属性值的定义,或者行为的运行,
这些内容都定义在构造函数中
如果属性值不确定,可以再构造函数的参数列表上体现
在创建对象时 将具体的值传入
4.2 局部代码块,构造代码块
局部代码块
                                限定变量的生命周期

构造代码块
"笔试题 需要知道执行流程" (写在类体中)
                        它是只要构造方法执行,它就执行,并且优先于构造方法执行

作者: 穆爱明    时间: 2013-7-9 09:08
学习一下,感谢分享!




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