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

© xiaolongwang 中级黑马   /  2015-11-29 10:39  /  380 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

面相对象案例总结

1.Override 和 Overload的区别?Overload是否可以改变返回值类型?
        Override(方法重写):
                在子类中,出现和父类中相同的方法申明的现象。
        Overload(方法重载):
                用一个类中,出现方法名相同,参数列表不同的现象。
               
        Overload和返回值类型无关,所以可以改变返回值类型。       

2.this 和 super的区别和各自的作用?
        this代表本来对应的引用;
        super代表父类存储空间的标识(父类引用,可操作父类的成员)。
        使用区别:
                A:调用成员变量
                        this.成员变量名                调用本类的成员变量
                        super.成员变量名        调用父类的成员变量
                B:调用构造方法
                        this(...)                调用本类的构造方法
                        super(...)        调用父类的构造方法
                C:调用成员方法
                        this.成员方法名                调用本类的成员方法
                        super.成员方法名        调用父类的成员方法
        总结:this访问本类成员,super访问父类成员。
       
3.一个类的初始化过程(总结的好像有问题,看出问题的朋友请指正)
        A:成员变量初始化
                a:默认初始化
                b:显示初始化
                c:构造方法初始化
        注意:子类构造方法执行前默认先执行父类的无参构造方法
                  子类的构造方法的第一条语句默认都是:super();
                  
        解释:子类继承父类中的数据,有可能会使用,所以,子类初始化之前
                  必须先完成父类的初始化          
       
5.分层初始化
        即子父类初始化(子类初始化之前先初始化父类)
        看程序写结果
        class X{
                Y y = new Y();
                X(){
                        System.out.print("X");
                }
        }
        class Y{
                Y(){
                        System.out.print("Y");
                }
        }
        public class Z extends X{
                Y y = new Y();
                Z(){
                        super();                //难点在于,这里super()仅仅表示分层初始化
                        System.out.print("Z");                //与顺序执行无关。
                }
                public static void main(String[] args){
                        new Z();
                }
        }
        结果:YXYZ
       
6.关于抽象类的三个小问题
        A:抽象类无法实例化,那么其构造方法存在的目的是什么?
        答案:用于子类访问父类数据的初始化。
        B:没有抽象方法,但却定义为抽象类的类,有什么用:
        答案:为了不让创建对象。
        C:abstract不能和那些关键字共存
                a:final                冲突
                b:private                冲突
                c:static                无意义
               
7.接口成员的特点
        A:成员变量
                只能是常量,默认修饰符:public static final
        B:构造方法
                没有构造方法
        C:成员方法
                只能是抽象的方法,默认修饰符:public abstract
               
8.成员内部类问题(看程序写结果)
        class Outer{
                public int num = 10;
                class Inner{
                        public int num = 20
                        public void show(){
                                int num = 30;
                                System.out.print(num);
                                System.out.print(this.num);
                                System.out.print(Outer.this.num);
                        }
                }
        }
        答案:30 20 10
       
9.匿名内部类问题(补齐代码)
        interface Inter{
                void show();
        }       
        class Outer{
                //填写代码
        }
        class OuterDemo{
                public static void main(String[] args){
                        Outer.method().show();
                }
        }
        输出:hello
        答案:public static Inter method(){
                        return new Inter(){
                                public void show(){
                                        System.out.println("hello")
                                }
                        };
                }

10.匿名内部类的使用
        interface Person{
                public abstract void study();
        }
        class PersonDemo{
                public void method(Person p){
                        p.study();
                }
        }
        class Test{
                public static void main(String[] args){
                        PersonDemo pd = new PersonDemo();
                        pd.method(new Person(){
                                public void study(){
                                        System.out.println("javaSE");
                                }
                        });
                }
        }

0 个回复

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