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

第一部分: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 父类名(){......}; 
匿名内部类在图形界面的事件处理中应用较多。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值