• java基础英语---第九天


    Super ['sju: pə]  父类的,超级的,,超类的

    Final ['fai nl] 最终的

    finally

    finalized

    Abstract ['æbstrækt] 抽象的

    Interface [ 'intəfeis ]  接口

    Imple ments ['impliments] 实现

    Mouse [maus ] 鼠标, 老鼠

    Bonus          [ 'bəunəs ] 奖金

    Inner [ 'inə ] 内部的

    Protect [prəu'tekt] 保护,受保护的, 防卫

    Eclipse中会用到的单词:

    File [ 'fail]  文件

    Folder ['fəʊldə] 文件夹

    View [ vju: ] 视图, 视线,看

    Show view 显示视图

    知识点总结:

    9.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();

    建议:自己手动加上修饰符。

    9.2. 演讲内容

    (4)接口特点:(掌握,演讲面试题)

    A:接口是对外暴露的规则

    B:接口是功能的扩展

    C:接口降低了程序的耦合性。

    **内聚(自己实现功能的能力)

    **高内聚,低耦合。

    举例:主板和CPU,USB接口,电源插座。

    D:扩展说了下接口的理解

    **狭义的理解就是java中的接口。

    **广义的理解就是:任何定义的规范都是接口。

    (5)接口和抽象类的区别:(掌握,演讲面试题)

    A:抽象类只能被单继承;接口可以被多实现。

    B:抽象类中的成员:

    成员变量:可以是常量,也可以是变量。

      成员方法:可以是抽象的,也可以是非抽象的。

      构造方法:虽然不可以创建对象,但是可以给子类实例化用。

      接口中的成员:

    成员变量:只能是常量。默认修饰符 public static final

    成员方法:只能是抽象的。默认修饰符 public abstract

    C:抽象类中定义的是体系结构中的共性的内容。

      接口中定义的是对象的扩展功能。

    D:抽象类被继承表示的是:"is a"的关系。xx是yy中的一种。

      接口被实现表示的是: "like a"的关系。xx像yy中的一种。

    (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)

    9.3. 2:多态(掌握)

    (1)某一类事物的多种存在形态。

    **方法重载(静态多态)

    **方法重写(动态多态,对象多态)

    (2)对象多态的前提

    A:类与类(或接口)要有继承(或实现)关系。

    B:一定要有方法的重写。

    C:一定要有父类或者接口的引用指向子类的对象。

    (3)多态思想:可以指挥同一类型的一批对象做事情。多态的出现让我们复杂的问题简单化了。

    A:Animal Cat Dog

    **method(Animal a){a.eat();}

    B:同学们吃饭

    C:士兵打仗(抬枪,瞄准,射击)。

    (4)多态中成员的特点:(我们只研究特殊的,就是说名字一样的东西)

    Fu f = new Zi();

    A:成员变量:编译和运行都看Fu。

    B:非静态方法:编译看Fu,运行看Zi。

    C:静态方法:编译和运行都看Fu。

    举例: 动物的例子:

    向上转型

    Animal a = new Cat();

    a.eat();

    //a.catchMouse();

    向下转型

    Cat c = (Cat)a;

    c.eat();

    c.catchMouse();

    //向上转型

    Animal a = new Dog();

    //向下转型 转换异常

    //Cat c = (Cat)a;

    Dog d = (Dog)a;

    孔爹的例子:

    孔爹:教课(Java)

    孔子:教课(论语),看小说(),打游戏()。

    孔爹 k = new 孔子();//穿上他爹衣服,就跟着去了

    k.教课(论语)。

    //k.看小说();

    孔子 kz = (孔子)k;//把衣服脱了

    kz.教课(论语);

    kz.看小说();

    kz.打游戏();

    9.4. 3:Object(掌握)

    (1)Object类:java中所有类的父类。它是java类体系结构中的根类。

        java中的类都直接或者间接继承自Object类。

    (2)学习了里面的几个方法:重点掌握 toString(),equals()。

    A:boolean equals(Object obj)

      指示其他某个对象是否与此对象“相等”。

    B:String toString()

      返回该对象的字符串表示。

    C:int hashCode()

      返回该对象的哈希码值。

    D:Class<?> getClass()

      返回此 Object 的运行时类。

    E:protected void finalize() 了解

      当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

      **final,finally,finalize

    (3)重点看下面两个方法

    //重写toString()方法

    public String toString()

    {

    //return "HelloWorld";

    return "name:"+name+",age"+age;

    }

    //重写Object的equals方法

    public boolean equals(Object obj)//s2--obj

    {

    //为了提高效率

    if(this == obj)

    {

    return true;

    }

    //为了程序的健壮性

    if(!(obj instanceof Student))//格式:对象 instanceof 具体的类名

    {

    return false;

    }

    Student s = (Student)obj;

    if(this.age==s.age)

    {

    return true;

    }

    else

    {

    return false;

    }

    }

  • 相关阅读:
    看动画轻松理解「递归」与「动态规划」
    21天,在Github上获取 6300 star
    啥是佩奇排名算法
    什么是平衡二叉树(AVL)
    看完动画你还会不懂 快速排序么
    冰与火之歌:「时间」与「空间」复杂度
    21天,在Github上获取 6300 star
    看完动画你还会不懂 快速排序么
    五分钟学会一个有意思的排序:计数排序
    十大经典排序算法动画,看我就够了!
  • 原文地址:https://www.cnblogs.com/bigorangehasc/p/8638762.html
Copyright © 2020-2023  润新知