java基础知识03

来源:互联网 发布:局域网交流软件 编辑:程序博客网 时间:2024/06/16 21:51


一:面向对象

1、  名词提炼法:人开门

        三个特征:封装、继承、多态

        以后开发:其实就是找对象使用,没有对象,就创建对象。 其实就是找对象、建立对象、使用对象、维护对象的关系

2、  类和对象的关系

        类:对现实生活中事物的描述

        对象:就是这类事物,实实在在存在的个体

        例如需求:描述汽车(颜色、轮胎数),描述事物其实就是在描述事物的属性和行为

                              属性对应的是类中的变量,行为对应的是类中的函数(方法)

         其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法)

                                            

3、匿名对象:           new Car().color = “blue”;

                                      匿名对象 调用属性没有意义(立马成为垃圾),调用方法有意义。

                                     //匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化,如果对一个对象进行多个成员调用,必须给这个对象

                                                                               起个名字

                                    //匿名对象使用方式二:可以将匿名对象作为实际参数进行传递

4、封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式

                  封装原则:

                                         1.将不需要对外提供的内容都隐藏起来

                                          2.把属性都隐藏,提供公共方法对其访问

        private:私有、权限修饰符,用于修饰类中的成员(成员变量、成员函数),私有只在本类中有效

        注意:私有仅仅是封装的一种表现形式

        之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码健壮性

5、构造函数

                特点: 1、函数名与类名相同            2、不用定义返回值类型                   3、不可以写return语句

                作用:可以给对象进行初始化。

                            对象一建立就会调用与之对应的构造函数

                当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数,当在类中自定义了构造函数后,则系统不再加

                构造函数与一般方法的区别:

                                构造函数时在对象一建立就运行,给对象初始化

                                而一般方法是对象调用才执行,给对象添加对象具备的功能

                                一个对象建立,构造函数只运行一次

                               而一个方法可以被对象调用多次

                什么时候定义构造函数呢?

                                当分析事物时,该事物具备一些特性或者行为,那么将这些内容定义在构造函数中。

6、this代表本类的对象

       this代表它所在函数所属对象的引用

       构造函数件的调用只能用this语句,并且this语句只能放在构造函数的第一行

                       Person(String  name)

                      {

                         this.name = name;          

                      }

                       Person(String  name,int   age)

                        {

                           this(name);           // this语句,this.name = name;       

                           this.age = age;      

                         }

7、static  静态关键字

                   用法:是一个修饰符,用于修饰成员(成员变量、成员函数)

                                当成员被静态修饰后,就多了一个调用方式,出了可以被对象调用外,还可以直接被类名调用。  类名.静态成员

                   static特点:1、随着类的加载而加载   2、优先于对象存在         3、被所有对象所共享         4、可以直接被类名所调用   5、存在于方法区中

                   静态使用注意事项:

                                          1、静态方法只能访问静态成员,非静态方法既可以访问静态也可以访问非静态

                                          2、静态方法中不能定义this、super关键字,因为静态优先于对象存在

                    静态的应用:每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用

8、摘出类中的文档注释(/**            */):                        在命令行下输入       javadoc      —d      myhelp       -author      -version            ArrayTool.java

                                                                                               如果一个雷需要提供help文档,需要public  class  ArrayTool

9、静态代码块

10、Person p = new  Person(“zhangsan”,20);

          分析这句话都做了什么事情:

                     1、因为new用到了Person.class,所以会找到Person.class文件并加载到内存中

                     2、执行该类中的static代码块,如果有的话,用来给Person.class类进行初始化

                     3、在堆内存中开辟空间,分配内存地址

                     4、在堆内存中建立对象的特有属性,并进行默认初始化

                     5、对属性进行显示初始化

                     6、对对象进行构造代码块初始化

                     7、对对象进行相应的构造函数初始化

                     8、将内存地址赋给栈内存中的p变量

11、设计模式:解决某一类问题最行之有效的方法,java中有23中设计模式

                           单例设计模式:解决一个类在内存只存在一个对象

                           想要保证对象唯一:

                                    1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象

                                    2、还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象

                                    3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

                           这三步怎么用代码体现呢?

                                     1、将构造函数私有化

                                     2、在类中创建一个本类对象

                                     3、提供一个方法可以获取到该对象

                         


                 对于事物该怎么描述还怎么描述,当需要将该事物的对象保证在内存中唯一是,就将以上3步加上即可。


12、继承  extends

                1、提高代码复用性

                 2、让类与类之间产生了关系,有了这个关系,才有了多态的特性

         聚集:聚合和组合

         变量:如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this,子类要访问父类中的同名变量用super

                                         

            子父类中的函数:

                               当子类出现和父类一模一样的函数时,当子类对象调用该函数时,会运行子类函数的内容,如果父类的函数被覆盖一样,这种情况是函数的另一个特性:重写                                (覆盖)

                               子类重写父类:必须保证子类权限大于等于父类权限,才可以重写,否则编译失败

                               静态只能重写静态(了解)

             子父类中的构造函数:

                                在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句super();这个语句会访问父类中空参数的                                 构造函数,而且子类中所有的构造函数默认第一行都是super();

                                为什么子类一定要访问父类中的构造函数:

                                              因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。所以子类在对象初始化时,要先访                                                 问一下父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

                                 注意:super语句一定要定义在子类构造函数的第一行。

                                  this()和super()在构造函数中只能有其一。

13、final关键字:最终,作为一个修饰符

                     1、可以修饰类、函数、变量

                     2、被final修饰的类不可以被继承,为了避免被继承,被子类重写功能

                     3、被final修饰的方法不可以被重写

                     4、被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,又可以修饰局部变量

                           当在描述事物时,有些数据的出现值是固定的,那么这时为了增强阅读性,都会给这些值取个名字,但这个值不需要改变,所以加final修饰。

                            作为常量:常量的书写规范所有字母都大写

                                               例 final   double        PI  =  3.14;

                      5、内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

14、抽象类:abstract 关键字。当多个类中出现相同功能,但是功能主题不同,这时可以进行向上抽取。这时只抽取功能定义,而不抽取功能主体。

          抽象类的特点:

                     1、抽象方法一定在抽象类中

                     2、抽象方法和抽象类都必须被abstract关键字修饰

                     3、抽象类不可以用new创建对象,因为调用抽象方法没意义。

                     4、抽象中的方法要被使用,必须由子类重写所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

           //需求 : 获取一段程序运行的时间

          // 原理 :获取程序开始和结束的时间并相减即可         获取时间:System.currentTimeMillis();


                                          

                        当代码完成优化后,就可以解决这类问题,这种方式,称为模版方法设计模式。在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分                         在使用不确定的部分


原创粉丝点击