您的位置:首页 > 编程语言 > Java开发

【安博培训技术】Java1 Java面向对象20130918

2013-09-21 09:34 274 查看
第一部分:Java面向对象

对象是人们要进行研究的任何事物。

类描述一组相似对象的共性, 是对某类事物的描述。类是具有相同属性和行为的一组对象的模板

我们编程的主要任务就是设计一个个类,然后由类

   产生对象,完成特定的功能。

所有Java程序都以类class为组织单元

方法是对象所具有的功能和操作 

对象需要做某些事情,在类中添加方法

构造方法是创建给定类的对象时调用的方法

构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值

构造方法必须满足以下语法规则:

     1、方法名与类名相同

     2、不写返回值类型

两种构造方法

空构造方法:在类中没有写构造方法时,Java在编译时自动加上一个空构造方法

带参数的构造方法:自行编写的构造方法,在类中写了带参构造方法后,Java不再自动添加空构造方法。

 成员变量:在类体的变量定义部分所定义的变量。

 局部变量:在方法体中定义的变量和方法的参数。

注意:

    (1)成员变量在整个类内都有效,局部变量只在定义它的方法内有效。

    (2)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。

    (3)可以使用 this 关键字,调用被隐藏的成员变量,如:this.name ,this指代当前对象。

     (4) 成员变量可以不用赋初值, 局部变量必须赋初值,如果不赋值的话,用的时候会报错

方法重载

      在一个类中,定义多个同名的方法,它们的参数个数或类型不同,称为方法的重载。

构造方法重载

      构造方法重载是方法重载的典型示例。

通过调用不同的构造方法来表达对象的多种初始化行为

类可以将数据和方法封装在一起,以一个完整的形式呈现出来,其中数据表示类的属性,方法表示类的行为,分别称为成员变量和成员方法。

可以通过对属性的封装来实现属性满足一定的要求

封装,就是隐藏实现细节

将属性私有化,提供公有方法访问私有属性

通过这些公有方法访问私有属性 

属性封装的具体实现

1、修改属性的可见性来限制对属性的访问

2、为每个属性创建一对赋值(setXxx)方法和取值 (getXxx) 方法,用于对这些属性的访问

3、在setXxx和getXxx方法中,加入对属性的存取限制

          成员变量可分为实例变量和类变量(静态变量)。

          类变量声明使用 static 关键字,与实例变量的存储有差别。

public class Person {

    String  name;             //姓名,实例成员变量

    private  int  age;         //年龄,实例成员变量

    static  int  count;           //人数,类成员变量

}

      成员方法可分为实例方法和类方法(静态方法)。

      使用 static修饰的方法叫做类方法。

      

类方法的两种调用方式

public static int howMany() //类方法

{

      return count;     //类方法只能访问类成员变量

}

Person.howMany();     //通过类名调用类方法

p.howMany();              //通过对象调用类方法

子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性

    类的继承是一种由已有类派生新类的机制。被继承的类称为父类。由父类创建的新类称为子类。

    子类自动继承父类的属性和方法,也可以根据需要进行修改,添加新的属性和方法。使用继承,可以有效实现代码复用。

    在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:

    public  class  Student  extends   Person 

 {

         String   school;        

 } 

    super是指代父类对象的关键字。

    当需要访问被隐藏的父类中的同名变量或方法时,可以在子类中使用关键字super 作前缀,指明调用父类的成员变量或方法。

    super( )表示调用父类的构造方法

    super.f( )表示调用在父类中声明的方法f( )。

    super.number表示调用父类中的成员变量number 。

编写父类,一般父类中定义一些通用的属性与方法

编写子类,使用 extends 关键字继承父类

继承的JAVA实现

继承父类中的原始成员:

      当子类中未定义出该成员时将自动采用继承。

重定义父类中的成员:

      子类可以重定义(隐藏)父类的同名成员变量。当父类中的某些成员方法不再适合子类的需要时,在子类中应重写(覆盖)父类的同名方法。

扩充增强子类功能:

      当子类要求具有新的功能时,应添加出该功能(新添新的成员)。

在Java 中,所有的Java类都直接或间接地继承了java.lang.Object类

在Java中,只允许单继承,即仅允许每个类有一个父类,但一个类可以有多个子类。

类的多态:类中方法的方法名相同,但有不同的功能实现。JVM根据程序运行时情况自动调用适合的方法.

多态的两种形式:

    1、子类重写父类方法

      子类方法与父类方法的方法头相同。运行时,根据实际创建的对象类型动态决定使用哪个方法,父类对象调用父类方法,子类对象调用子类重写的方法。

    2、同一个类中方法的重载

      在一个类中,定义多个同名的方法,它们的参数个数或类型不同,称为方法的重载。

抽象类和最终类

抽象类:用 abstract 关键字修饰的类

          abstract class 类名{…… }

抽象方法:用 abstract关键字修饰的方法

     抽象方法只需声明,没有实现,格式如下:

      abstract   返回类型 方法名( [参数] );

含有抽象方法的类必须被声明为抽象类,抽象类不能创建对象。抽象类被继承时子类要实现抽象方法。

编程应用:在一个类中,如果只能给出部分方法的实现,不能给出全部的方法实现时,采用抽象类来描述。

最终类:用final关键字来修饰的类

编程要求:final不能与abstract组合在一起使用来说明一个类,否则会相互矛盾。

        abstract final class Person      //错误

        {   ……

         }

编程应用:如果一个类编写的已较丰富,或者是基于安全性考虑,不希望再对它进行派生以覆盖其特定的成员函数的应用场合(固定的标准功能的类)。

被final声明的类,不能够被继承,即该类不可能成为父类。

         final class 类名 { }

被final声明的方法,不能被重写。

         final 返回型  方法名([ 参数] ) { }

被final声明的变量,它的值存储一次就不能再变更,也就是被声明为常量的意思

     例如:final double PI = 3.1415926;

 java的系统程序包

 Java 常用类库

API 包 功能

java.lang 包含java语言的核心类库

java.util 提供各种实用工具类

java.io 标准输入/输出类

java.awt 组件标准GUI,包含了众多的图形组件、方法和事件

java.applet 提供对通用Applet的支持,是所有Applet的基类

java.net 实现java网络功能的类库

java.sql 支持java程序的数据库访问和处理

包与目录的关系

创建包myjava.sg.chap6,即创建目录结构 ..\myjava\sg\chap6 ,包与文件夹同名。

如何导入包

为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类

import java.util.*;      //导入java.util包中所有类

import java.lang.*;    //导入java.lang包中所有类

包装类

原始数据类型 包装类

byte(字节型) Byte 

char(字符型) Character 

int(整型) Integer

long(长整型) Long 

float(单精度实型) Float

double(双精度实型) Double 

boolean(布尔) Boolean

short(短整型) Short 

int和String的类型转换

    (1) 将字符串String转换成整数int

          int i = Integer.parseInt(“1234”); 

    (2) 将整数 int 转换成字符串 String

          String s = String.valueOf(i); 

    注: Double, Float, Long 的转换方法与Integer大同小异.

Java接口

接口是某个事物对外提供的一些功能的声明

可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点

Java接口可以由常量和抽象方法组成。接口中的方法只能是声明,方法的具体实现是留给实现该接口的类去完成。

在构建类时,经常会遇到这样情况,在描述某个类的各个方法时,对每个方法我们只能给出其功能实现的要求(原型声明),但不能给出具体的功能实现(方法体)。这种情况下考虑用接口。

Java接口的声明

一个Java接口是一些抽象方法和常量的集合

[public]  interface  接口名 [extends 父接口名列表] {

         [public]  [static]  [final]  类型  常量名=常量值;

         [public]  [abstract] 返回值类型  方法名(参数列表);

  }

  Java接口的实现

[修饰符]  class  类名 [extends  父类]  [implements 接口列表] {

      ……

}

Java接口的应用

可以使用接口标识类型

运行时,根据实际创建的对象类型调用相应的方法实现

内部类

       内部类(Inner Class)是在一个类的内部嵌套定义的类,它可以是类的成员,也可以在一个语句块内部定义,还可以在表达式内部匿名定义.    

       包含内部类的类称为外部类。

匿名内部类

匿名内部类是没有名字的内部类,把继承类与实例化子类对象压缩在一个表达式里面,也包括写在方法调用的小括号中。

当只需要创建一个类的对象而且用不上它的名字时,使用内部类更加简洁、方便。

匿名内部类的语法规则:

         new 接口名(){......}; 

      或 new 父类名(){......}; 

匿名内部类在图形界面的事件处理中应用较多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: