现在的位置: 首页 > 综合 > 正文

黑马程序员—Java入门学习日记基础篇-面向对象总结4

2018年05月23日 ⁄ 综合 ⁄ 共 3166字 ⁄ 字号 评论关闭

------- android培训java培训、期待与您交流! ----------

- Java面向对象编程知识点总结

一:final关键字。

  1. final关键字可以修饰类、方法和变量。

  2. final修饰的类不可以被继承,是为了避免被子类修改功能。

  3. final修饰的方法不能被复写。

  4. final修饰的变量是一个常变量,只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。(但描述一些事物时,一些数据的出现是固定的,那么这时为了增强阅读性,都给这些值起一个名字,以方便阅读)

    如: final int PI = 3.14

    5.常变量的书必须全大写,多个单词组成则为全大写下划线连接。如:PI_MATH

    二.抽象类。

    当多个类中出现相同的功能,但功能的主体不同,这时要向上抽取,只抽取功能的定义,而不抽取功能的主体。

    1.抽象:1.抽象方法一定要定义在抽象类中。2.抽象方法和抽象类都必须被abstract关键字修饰。3.抽象类不可以使用new创建对象,因为抽象类的方法没有方法主体,调用无意义。4.抽象类中的方法要使用,必须由子类复写其所有的抽象方法后,建立子对象的调用。如果子类只覆盖了部分的抽象功能,那么该子类还是一个抽象类。

    2.抽象类的描述:抽象类同一般类没有太大的区别,该如何描述事物还若何描述,只不过该类中出现了一些抽象的或者说是看不懂的东西。这些不确定的东西也是该事物的功能需要明确出现,但是无法定义其方法主体,所以通过抽象方法表示出来。抽象类只是比普通类多了一个抽象方法。

    3.模板方法:在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该子类去完成。

    如下代码所示:

    abstract class GetTime

    {

      public final voidgetTime()

      {

            long start = System.currentTimeMillis();//获取系统开始运行时间。

            runCode();//调用不确定的父类抽象方法

            long end =System.currentTimeMillis();//结束时间

            System.out.println("用时:"+(end -start));

      }

    public abstract void runCode();//定义不确定方法为抽象方法。

     

    }

    class Son extends GetTime

    {

     

      public void runCode()//子类复写其父类的抽象方法

      {

            for(int i =0;i<=10000;i++)

            {

             System.out.println(i);

           

           

            }

      }

    }

    class  ModelDemo

    {

      public static voidmain(String[] args)

      {

         Son son = new Son();

         son.getTime();//掉用对象方法测试结果。

      }

    }

     
     


    三.接口。

    当抽象类中的方法都是抽象的,那么该类可以使用接口的方式表示,class用于定义类部分抽象,interface用于定义接口全部抽象。

    1.接口成员:1.常量和成员方法为全部抽象。2.接口中的成员都有固定的修饰符:常量的修饰符必须是:public static final3.方法的修饰符必须是:public
    abstract
    。所以接口中的成员全是public,若不加修饰符系统将自动添加完全。所以书写时只写变量和方法的类型就可以,但不好识别。抽象的方法后边跟分好。

    2.子类实现父类使用implement关键字。

    Implementextends的区别,implement表示子类对接口的功能的实现,而不是继承。对于变量因为其为static类型,所以通过静态的属性去访问如使用接口名调用,也可以使用子类的名去掉用,因为其是共享数据。而且其不能被重写(final修饰)。extends是子类继承父类的全部属性。

    3.接口也不可以创建对象,因为其全部为抽象方法,需要被子类实现,之类对接口中的功能要全部复写后,子类才可以创建对象。

    4.接口可以被类多实现。Java语言不支持多继承,但支持多实现,一个子类可以实现多个接口的功能

    5.接口的特点1、接口是对外暴漏的。2、使程序可以功能扩展。3、可以多实现,降低耦合性。4、类与接口之间是是实现关系,而且类可以继承自一个类的同时,还可以实现多个接口。

    .多态。

    可以理解为事物存在多种形态。如:同一方法存在不同的函数功能(重写),抽象父类的引用可以指向子类对象。

  1. 多态的前提:必须类与类之间有继承或实现的关系,并且存在重写才能使用。

    2.多态的应用:

    abstractclass Animal

    { public static int NUM = 10;

      public int x = 21;

      abstract void eat();

      abstract void run();

      public void wow()

      {

         System.out.println("let mespeak");   

      }

    }

    //------------------------------------------------------------

    class Catextends Animal

    { public int x = 10;//

      public void eat()

      {

      System.out.println("let me eatsomething"+NUM);

      }

      public void run()

      {

      System.out.println("let me walk");

      }

      public void sleep()

      {

      System.out.println("let me sleep");

      }

    }

    //--------------------------------------------------------------

    class Dogextends Animal

    {

        public voideat()//---------------------------------------

      {

      System.out.println("let me eatbone");

      }

      public voidrun()//---------------------------------------

      {

      System.out.println("let me run");

      }

      public void wow()

      {

         System.out.println("let me wow");  

      }

    }

    //--------------------------------------------------------------

     

    class AbsDemo

    {

      public static void main(String[] args)

      {

            Animal cat = new Cat();

            Animal dog = new Dog();

            kind(cat);

            kind(dog);

            System.out.println(Animal.NUM+dog.NUM);

            Cat c = (Cat)cat;

            c.sleep();

      }

       publicstatic void kind(Animal a)

      {

         a.eat();

         a.run();

         a.wow();

         System.out.println(a.x);

      }

     

    }

     
     


    //--------------------------------------------------------------

抱歉!评论已关闭.