zoukankan      html  css  js  c++  java
  • Java-面向对象

    面向对象程序设计:
            面向对象是Java语言的基本设计思想,类是Java中最核心的最基本的内容。
            面向对象的思想是基于一整套理论体系构成的,利用封装、继承、多态等方法来实现代码的重用,减少程序错误,进而降低软件开发的工作量。
    
    1:类
            类是Java语言的基础,任何的操作都要在类中完成,如方法、构造函数、参数的传递等。类是Java中定义的一个模板。
            类的一般形式:
                    class 类名{
                            类型  变量名;
                            ...
                            类型  方法名(参数){
                                    方法内容;
                            }
                    }
            
            声明类时,可以用的修饰符:private(只在本类中可见);   
                                                                protected(本类或同一包中可见);  
                                                                public(任何类都可见);  
                                                                默认(本类或同一包中可见)
                                                                
            声明变量时,可以用的修饰符:private(只在本类中可见); 
              
            声明方法时,根据有无返回类型可以用void来修饰;
            
            主方法:程序的入口.格式如下:
                    public static void main(String[] args){
                    
                    }
                    
            构造方法:在程序中创建对象时,需要清除或修改其属性的值,将以前的运算数据都清除掉,用构造方法来初始化参数。
                              类中没有提供自己的构造方法,在编译时,编译器就会为这个类添加一个构造方法。
                              构造方法的名称必须要和类的名称相同,并且没有返回值。
                              构造方法必须放在方法的开始位置。
                              初始化的结果是数字变量全都设置为0,布尔类型值为false, 对象变量为null;
                              构造方法可以带参数,如果不希望在类中对属性进行初始化,加上参数,并通过有参构造方法将值传递给各个属性。
                                构造方法根据参数可以有多个,但方法名字一样,参数的顺序或多少不能相同。
            
            成员变量:在类中定义,共享的,类中的方法都可以使用成员变量。成员变量又称为全局变量。
                                语法: 变量修饰符  类型  变量名;    
                                             其中    类型可以是任意的数据类型,也可以是数组或类。在一个类中,成员变量是唯一的,但成员变量的名可以和类名相同。    
                                                        变量修饰符可以使用private、protectedpublicdefault 还可以使用static,在静态方法中使用的变量必须要使用static进行修饰,还可以使用final关键字,这样变量就会变成常量,一次赋值后,不允许被修改。
                                                        
            局部变量:在方法中定义和使用的,使用范围仅限于所声明的方法内。不同方法内所定义的变量名可相同,变量的类型可以不同。
            
            this关键字:使用this可以不通过对象引用成员变量和方法。一般情况this可有可无,但如果成员变量和方法中的参数名相同,this就很重要了。
    
    2:对象
            创建对象:        类名 对象名 = new 类名(参数列);
            
            对象属性和方法的访问: 通过在对象实体后加"."来调用类中定义的可访问的属性和方法;
            
            对象的比较:用“==”判断的是二者是否为同一个对象,对内存中的地址是否相同;
                                    用equal方法来比较,是对比的内容,值相同就行。
            
            销毁对象:System.gc();  Java有垃圾回收机制,程序员可以不考虑。


    继承:
      是指若一个类从另一个类派生而来,派生类自动具有了被继承类所有的特性,实现了类的扩展,被继承的类被称为“父类”、“超类”、“基类”,继承父类的就叫做”子类“,“扩展类”、“派生类”;使用继承可以使得子类具有父类的各种属性和方法。从而不需要再次编写相同的代码,促进软件的复用,并且集成的形式是可以更加复杂的。有单一继承和多重继承。

    
    

      实现继承:也就是创建一个类的子类,在类的声明中加入extends子句。
        <修饰符> class <子类名> extends <超类名> {
          //实现代码
        }
        子类的名可以由用户在符合标识符的命名规范下随意定义,一个子类只有一个父类,但子类无法继承父类中使用private修饰的类成员。

    
    


      单一继承:一个类只继承一个直接父类,
      多重继承:一个类只可以继承一个父类,只有单一继承,没有多重继承,但可以通过实现接口的方法来达到多重继承的目的。

    
    

    抽象类abstact:类中只包含对方法的声明而没有具体的实现。
        抽象类至少含有一个抽象方法,
        继承抽象类的子类必须实现其所有抽象方法才能被实例化,否则子类还是抽象类。
        抽象类中的方法需要声明方法的名称,但不用指明方法体。对问题域进行分析和设计,得出抽象的概念时,可以使用抽象类。
        抽象类要比类的继承更加高级一些,是对类的抽象。
        抽象类拥有未能够实现的方法,而且不能够被实例化,只能被继承扩展。
        语法:
          abstact class ClassName{
            abstract Return abstractMethodName(paramList);
            //其他方法代码
          }

    
    


    关键字final:
      成员变量被final修饰的话,成员变量就变成了一个常量,只能被赋值一次,可以不在声明时赋值,但需要在构造函数完成之前保证这个变量有值
      方法被final修饰的话,该方法不能被重写,这样有了比较高的安全保证。
      类被final修饰的话,这个类不能被继承。只有当该类中的所有方法都不需要重写的时候,才能将该类定义为final类。

    
    

    Object类:是一个特殊的类,是所有类的祖先类。
      Object对象:定义一个Object类型对象的数组,根据继承,可以放置任何的类型,可以将几个不同的对象放置到Object数组中,但是放置进去后,对象的类型就会被丢弃了,在取出后需要进行类型的转换。
      重写equals方法:Object中对equals的定义如下:
        public Boolean equals(Object obj){
          return(this == obj);
        }
      这样,如果两个对象指向同一个对象(在同一个内存地址上),就会返回true,
      重写toString方法:默认返回是对象的地址。可以覆盖toString方法来实现用户所要输出的内容。

    
    


    多态:
      重写:子类继承父类后,父类中某一方法不能满足新的要求,可以在子类中修改从父类继承过来的没有被private修饰的方法,并可同时定义自己的方法。
         重写的目的:修改父类的方法、对父类的方法进行扩展、可以在子类中定义具体的特定的行为。
      重载:指在同一个类中有两个或更多个方法可以使用一个相同的名称,不同的是它们的参数,只要参数不同,方法名桢是没有问题的。

    
    

    绑定:在对象引用与对象实例之间建立联系。
      静态绑定:前期绑定,在编译期建立的联系,决定变量的值或应调用哪个类的方法。性能好,提高代码的运行速度。
           属于静态绑定内容有:类属性、构造方法、声明为static的静态方法、声明为final的方法、使用关键字super调用的方法,包括super()。
      动态绑定:后期绑定,在运行期建立的联系,根据对象引用所指向的具体实例决定执行什么样的方法,由于是在运行时由JVM完成的,因此会减慢程序运行速度。
            动态绑定的好处是提高了程序设计的灵活度,降低了耦合性,
           动态绑定的过程:虚拟机提取对象的实际类型的方法表;虚拟机搜索方法签名;调用方法。

    
    


    接口interface:
    为解决无法实现多继承而提供的一个解决方案。接口中并没有实际的方法实现,只定义了一些空壳,一个类可以通过实现接口来实现多重继承关系。
    接口是一系列抽象方法和常量的属性集合,不能有变量,所有的方法必须为抽象方法,不能提供具体的方法实现。
    一个类实现了接口,就必须实现接口中所定义的所有方法,而且一个类可以实现多个接口。
    接口是一个类的框架,是一种完全形式上的抽象类。

    
    

    定义接口:
    修饰符 interface 接口名 {
    //接口内容
    //声明变量
    数据类型 变量名;
    抽象方法;
    ......
    //声明方法
    返回值类型 方法名();
    ......
    }
    注:接口的修饰符只有两种:默认无修饰符(所在包之内的类可见)和public(任何类都可见可用)两种。
    接口的名称设定需要满足Java标识符的规定
    接口定义的方法都为抽象方法,被自动设置为public的。

    
    

    实现接口:就是实现接口中所定的所有抽象方法,
    class 类名 implements 接口1,接口2{
    方法1(){
    //方法体
    }
    方法2(){
    //方法体
    }
    }
    注:由implements来表示实现接口,多个接口用逗号隔开。
    必须遵守重写的所有规则
    保持相同的返回类型。

    
    

    接口的引用:
    建立接口类型的引用变量,接口的引用变量可以存储一个指向对象的值引用,而这个对象可以是任何的实现该接口的实例,对象的方法必须是类中的非抽象方法。

    
    
    
    
    

    内部类:
    定义在类内部的类,通过内部类的定义,程序员将一些逻辑上相关的类组织在一起,并通过内部类的使用可以很好地控制内部类的可见性。
    一个类嵌套定义在另一个类中,这个叫内部类,包含内部类的类称为外部类,对外部类来说,内部类相当于成员变量或方法。

    
    
    
    
    
    
    
    
    



  • 相关阅读:
    override new virtual 的比较
    c#页面无内容解决方案
    插入排序
    排序算法(转)
    treenode遍历文件夹
    案例篇(1)
    索引器(转)
    迭代器的实现
    抽象类和接口的区别
    索引器与迭代器,属性的区别
  • 原文地址:https://www.cnblogs.com/lzhat/p/4340007.html
Copyright © 2011-2022 走看看