A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仙兒哥 中级黑马   /  2013-4-10 02:21  /  1255 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

面试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 面向对象语言三个基本特征
                        封装  继承  多态

4 个回复

倒序浏览
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举例
                        老师有钱,学生不能直接拿钱那就是抢钱啦
                        如果老师提供一个借钱的行为,学生调用即可
回复 使用道具 举报
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 局部代码块,构造代码块
局部代码块
                                限定变量的生命周期

构造代码块
"笔试题 需要知道执行流程" (写在类体中)
                        它是只要构造方法执行,它就执行,并且优先于构造方法执行
回复 使用道具 举报
学习一下,感谢分享!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马