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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 664941114 中级黑马   /  2016-7-13 09:34  /  504 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.1. 1:接口(interface)(掌握)
        (1)接口的由来:当一个类中的方法都是抽象的时候,你没必要定义为抽象类,
                       定义为接口就可以了。
        (2)解决了java中只能单继承的问题。(对多继承进行了优化)
                A:类与类:只能是单继承。
                B:接口与接口:可以是单继承,也可以是多继承。
                C:类与接口:可以是单实现,也可以是多实现。
        (3)成员特点:
                A:只有成员变量和成员方法。
                B:成员变量 默认修饰符 public static final
                        **int x = 20;
                        **其实是这样的 public static final int x = 20;
                C:成员方法 默认修饰符 public abstract
                        **void show();
                        **其实是这样的 public abstract void show();
                建议:自己手动加上修饰符。
1.2. 演讲内容
        (4)接口特点:(掌握,演讲面试题)
                A:接口是对外暴露的规则
                B:接口是功能的扩展
                C:接口降低了程序的耦合性。
                        **内聚(自己实现功能的能力)
                        **高内聚,低耦合。
                举例:主板和CPU,USB接口,电源插座。
                D:扩展说了下接口的理解
                        **狭义的理解就是java中的接口。
                        **广义的理解就是:任何定义的规范都是接口。
        (5)接口和抽象类的区别:(掌握,演讲面试题)
                A:抽象类只能被单继承;接口可以被多实现。
                B:抽象类中的成员:
成员变量:可以是常量,也可以是变量。
                                   成员方法:可以是抽象的,也可以是非抽象的。
                                   构造方法:虽然不可以创建对象,但是可以给子类实例化用。
                   接口中的成员:
成员变量:只能是常量。默认修饰符 public static final
                                        成员方法:只能是抽象的。默认修饰符 public abstract
                C:抽象类中定义的是体系结构中的共性的内容。
                   接口中定义的是对象的扩展功能。
                D:抽象类被继承表示的是:"is a"的关系。xxyy中的一种。
                   接口被实现表示的是: "like a"的关系。xxyy中的一种。
        (6)学生:Student
                A:属性:学号,姓名,年龄
                B:方法:学习(study),吃饭(抽象eat),抽烟或者不抽烟?(合适吗)
                发现:在学生中定义抽烟的方法不合适。所以呢,我们另外用一个类来定义抽烟的方法。
                      但是发现,如果用一个类描述抽烟的功能后,SmokeStudent是不能继承多个类的。
                      这个时候,我们又得重写思考了。发现,抽烟的学生像一个抽烟的机器,所以,
                      我们定义一个接口来放抽烟这个功能。
                 interface Smoking
                {
                        public abstract void smoking();
                }
               
           描述的是抽烟的学生:SmokeStudent extends Student implements Smoking
                SmokeStudent ss = new SmokeStudent();
                ss.eat();
                ss.study();
                ss.smoking();
               
          老师:Teacher
                A:属性 教师编号,姓名,年龄
                B:方法 教书(teach),吃饭(吃饭eat),抽烟或者不抽烟?(合适吗)
                发现:在老师中定义抽烟的方法不合适。所以呢,我们另外用一个类来定义抽烟的方法。
                      但是发现,如果用一个类描述抽烟的功能后,SmokeTeacher是不能继承多个类的。
                      这个时候,我们又得重写思考了。发现,抽烟的老师像一个抽烟的机器,所以,
                      我们定义一个接口来放抽烟这个功能。
                 interface Smoking
                {
                        public abstract void smoking();
                }
       
          描述的是抽烟的老师:SmokeTeacher extends Teacher implements Smoking
                SmokeTeacher st = new SmokeTeacher();
                st.eat();
                st.teach();
                st.smoking();
          最后,我们发现,这个代码还是存在着重复,比如说学生类和教师类中的属性姓名,年龄及方法吃饭。
          所以,我们进一步向上抽取。来了一个Person
          Person:属性:姓名,年龄
                  行为:吃饭(抽象eat)
               
1.3. 2:多态(掌握)
        (1)某一类事物的多种存在形态。
                **方法重载(静态多态)
                **方法重写(动态多态,对象多态)
        (2)对象多态的前提
                A:类与类(或接口)要有继承(或实现)关系。
                B:一定要有方法的重写。
                C:一定要有父类或者接口的引用指向子类的对象。
        (3)多态思想:可以指挥同一类型的一批对象做事情。多态的出现让我们复杂的问题简单化了。
                AAnimal Cat Dog
                        **method(Animal a){a.eat();}
                B:同学们吃饭
                C:士兵打仗(抬枪,瞄准,射击)
        (4)多态中成员的特点:(我们只研究特殊的,就是说名字一样的东西)
                Fu f = new Zi();
                A:成员变量:编译和运行都看Fu
                B:非静态方法:编译看Fu,运行看Zi
                C:静态方法:编译和运行都看Fu
               


0 个回复

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