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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵顺超 中级黑马   /  2014-7-21 08:36  /  723 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

21、多态:
        (1)同一个对象,在程序不同时刻的多种运行状态。举例:动物,狗是狗,狗是动物。水(气态,液态,固态)
        (2)多态前提
                A:存在着继承或者实现关系
                B:有方法的重写
                C:父类(接口)引用指向子类(实现)对象
        (3)多态的好处和弊端:
                好处:多态的存在提高了程序的扩展性和后期可维护性
                弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。
                      不能预先使用子类中定义的特有功能。
        (4)多态中对象调用成员的特点
                Fu f = new Zi();
               
                A:成员变量
                        编译看左边,运行看左边
                B:成员方法
                        编译看左边,运行看右边
                C:静态方法
                        编译看左边,运行看左边
        (5)多态的思想
                指挥同一批对象做事情。举例:带兵打仗,下课等。
22、instanceof关键字
                A:用于判断某个对象是否是某种类型。
                B:格式
                        对象名 instanceof 子类(实现)名
23、Object类:
        (1)是所有类的根类,超类。
           java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
        (2)Object类中的方法
                A:void finalize()
                  当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
                B:Class getClass()
                  获取对象的字节码文件的描述类,后面再讲反射的时候还会在说这个类。
                  String name = s.getClass().getName();
                C:int hashCode()
                  获取对象的哈希值。其实就是对象的内存地址值十进制表示
                D:String toString()
                  返回对象的字符串表示。
                  表示格式:
                  getClass().getName()+"@"+Integer.toHexString(hashCode());

                  一般我们输出对象名的时候,其实底层调用的就是该对象的toString()方法。
                  这种返回没有意义,所以,我们会重写这个方法,显示类的成员变量信息。
                E:boolean equals(Object obj)
                  用于比较两个对象的地址值是否相同。
                  我们获取对象后,比较它的地址值意义不大。所以也会对这个方法进行重写。
                  重写要完成什么功能,是根据需求定的。
        (3)==和equals的用法:
                A:==怎么用?
                        **可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
                        **可以用于比较引用数据类型,比较的是对象的地址值是否相等。
                B:equals怎么用?
                        equals只能用于比较引用数据类型的。
                        **Object提供的equals是用于比较对象地址值是否相同。
                        **自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。

24、package关键字
        (1)包:其实就是文件夹。用于区分不同包下相同的类名。
        (2)好处:
                A:对类文件进行分类管理。
                B:给类提供了多层命名空间
                        aaa.Demo
                        bbb.Demo
                C:写在程序文件的第一行。
                D:包也是一种封装形式。
25、import关键字
        (1)导入包的关键字
        (2)格式:
                import 包名;
        (3)注意:
                A:一个程序文件中只有一个package,可以有多个import。
                B:用来导包中的类,不导入包中的包。
                C:通常写import  mypack.Demo,明确自己使用的类。  
        (4)关键字的顺序
                类,包,导包这些关键的顺序。
                包 -- >  到包 -- > 类
26、不同修饰符可以修饰哪些内容
                        本类中        同一个包中 不同包中的子类中 不同包中
        private                OK       
        默认                OK        Ok               
        protected        OK        Ok            OK
        public                OK        Ok            OK                    Ok

                        类        构造方法        成员变量        成员方法               
        private                        OK                OK                OK
        默认                Ok        Ok                Ok                OK
        protected                OK                OK                Ok
        public          Ok        Ok                OK                OK
        static                                        OK                Ok
        final                Ok                        OK                OK
        abstract        Ok                                        OK

        一般格式:
                成员变量:
                权限修饰符+static/final+数据类型+成员变量名
                public static final int NUM = 10;
               
                成员方法:
                权限修饰符+static/final/abstract+返回类型+方法名
27、内部类(次重点)
        (1)把一个类定义在某个类中的,这个类就被称为内部类,内置类,嵌套类。
        (2)访问特点:
                A:内部类可以直接访问外部类中的成员,因为内部类持有外部类的引用,
                  格式为:外部类名.this
                B:外部类要想访问内部类的成员,必须创建对象访问。
        (3)内部类的访问格式:
                A:当内部类定义在外部类的成员位置,而且非私有,则可以在其他外部类中直接建立内部类对象
                  格式:外部类名.内部类名  变量名 = new 外部类对象.内部类对象
                        如:Outer.Inner in = new Outer().new Inner()
                B:当内部类在外部类成员位置,且被static修饰时
                        **外部其他类可直接访问静态内部类的非静态成员
                          格式:new 外部类名.内部类名().内部类成员
                          如:new Outer.Inner().function();
                        **外部其他类可直接访问静态内部类的静态成员
                          格式:new 外部类名.内部类名.内部类成员
                          如:new Outer.Inner.function();
        (4)什么使用时候内部类呢?
                假如有A类和B类,A类想直接访问B类的成员,B类访问A类成员的时候,
                需要创建A类对象进行访问,这个时候,就可以把A类定义为B类的内部类。
        (5)内部类的位置
                A:成员位置
                        **可以被private修饰(Body,Heart)
                        **可以被static修饰。(它访问的外部类的成员必须是静态的)       
                B:局部位置
                        **可以直接访问外部类中的成员,因为还持有外部类的持用
                        也可以直接访问局部成员,但是局部成员要用final修饰。          
                注意:局部内部类不能用private和static修饰               
        (6)通过class文件我们就可以区分是否带有内部类,以及内部类的位置
                Outer$Inner:成员内部类
                Outer$1Inner:局部内部类

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马