Java面向对象

来源:互联网 发布:单身比例 知乎 编辑:程序博客网 时间:2024/06/10 16:22

类的定义

public class Animal

         {

             public int legs;    

             public void eat(){

                  System.out.println(“Eating.”);

             }

             public void move(){

                             

          System.out.println(“Moving.”);

             }

    }

  • legs是类的属性,也叫类 成员 变量 。
  • eat,move是方法也叫类的成员 函数。

声明类

语法格式:

[< 修饰符>] class< 类名>

{

         [<属性声明>]

         [<构造器声明>]

         [<方法声明>]

}

说明:修饰符public:类可以被任意访问

         类的正文要用{  }括起来

举例:

         publicclass  Person{

   private int age ;                   //声明私有变量 age

   public void showAge(int i) { //声明方法showAge

   age = i;

   }

}

声明属性

语法格式:

[<修饰符>]  类型  < 属性名> [=初值] ;

说明:修饰符private: 该属性只能由该类的方法访问。

         修饰符 public: 该属性可以被该类以外的方法访问。

         类型:任何基本类型,如int、boolean或任何类。

举例:

public class Person{

  private int age;             //声明private变量 age

  public String name = “Lila”; //声明public变量 name

}

属性有时也称为:数据成员(数据),成员变量(变量)

声明方法

语法格式:

        <修饰符> <返回类型> <方法名>([<参数表>]) {

               [< 语句>]

}

说明:修饰符:public,private,protected 等。

         返回类型:return语句传递返回值。没有返回值:void。

举例:

         publicclass Person{

   private int age;

   public int getAge()  { return age;} //声明方法getAge

   public void setAge(int i) {         //声明方法setAge

           age = i;        //将参数i的值赋给类的成员变量age

   }

}

方法有时也称为:成员函数(函数)

对象创建及使用

Ø  使用 new +构造方法 创建一个新的对象;

Ø  使用 “对象名.对象成员” 的方式访问对象成员(包括属性和方法);

Ø  如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。

 

v  类的访问机制:

v  在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(有一个例外)

v  在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。

对象生命周期


匿名对象

l  我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象,如:new Person().shout();

l  如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。

我们经常将匿名对象作为实参传递给一个函数调用

构造器

  构造方法的特征

–      它具有与类相同的名称;

–      它不含返回值;

–      注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调了。

l  构造方法的作用:当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。

默认构造器

l  Java语言中,每个类都至少有一个构造方法;

l  如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个默认的构造方法:

–      默认构造方法没有参数

–      默认构造方法没有方法体

–      默认的构造方法:Animal(){}

l  所以:不编写构造方法就能用newXxx()创建类的实例。

l  Java类中,一旦类的定义者显式定义了一个或多个构造方法,系统将不再提供默认的构造方法;

l  构造器的主要作用:利用构造器参数初始化对象的属性。

Person p = new Person(“Tom”,18) 的内存状态变化过程分析:

函数

     返回值类型函数名(参数类型形式参数1,参数类型形式参数2,….)

     {

             程序代码

  return 返回值;

其中:

形式参数:在方法被调用时用于接收外部传入的数据的变量。

参数类型:就是该形式参数的数据类型。

返回值:方法在执行完毕后返还给调用它的程序的数据。

返回值类型:函数要返回的结果的数据类型。

实参:调用函数时实际传给函数形式参数的数据。

      如何理解函数返回值类型为void的情况

函数重载

函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。

  •   在同一个类中可以定义多个同名方法—方法名重载(overload)

         publicclass PrintStream{

         publicvoid print(int i) {……}

         publicvoid print(float f) {……}

         publicvoid print(String s) {……}

}

  •   重载方法的参数列表必须不同
  •   重载方法的返回值类型可以相同,也可以不同
  •   调用时根据方法的参数类型来区别。

    print(3);print(1.2f);print(“hello!”);

构造方法重载

构造方法一般用来创建对象的同时初始化对象。如

class Person{

         Stringname;

         intage;

         publicPerson(String n , int a){  name=n;age=a;}

}

构造方法重载使得对象的创建更加灵活,方便创建各种不同的对象。

构造方法重载举例:

      public class Person{

   public Person(String name, int age, Date d) {this(name,age);}

   public Person(String name, int age) {…}

   public Person(String name, Date d) {…}

   public Person(){…}

}

  • 构造方法重载,参数列表必须不同

this


l  如果func2方法被调用 ,一定是事先已经有了一个存在的对象,func2被作为那个对象的方法被使用。

l  在func2内部能引用别的对象 ,同样也能引用func2所属的那个对象。

l  在func2中,自己所属的那个对象的引用名称是什么呢?

l  this关键字在java程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。 

l  每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象,类中的成员方法与this之间的关系

 源文件布局

 

软件包

  • 包帮助管理大型软件系统:将语义近似的类组织到包中。
  • 包可以包含类和子包。
  • 例:某航运软件系统包括:一组域对象、GUI和reports子系统

package语句

  • package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:

  package<顶层包名>[.<子包名>]*;

  举例:pack\Test.java

    packagep1;    //指定类Test属于包p1

  public class Test{

          public void display(){

  System.out.println("in  method display()");

          }

  }

  • 包对应于文件系统的目录,package语句中,用‘.’来指明包(目录)的层次;
  • 包通常用小写单词,类名首字母通常大写。

import语句

  • 为使用定义在不同包中的Java类,需用import语句来引入所需要的类。Import语句告诉编译器到哪里去寻找类。
  • 语法格式:

  import  包名[.子包名…]. <类名|*>

  • 应用举例:

  import  p1.Test;  //import p1.*;表示引入p1包中的所有类

  publicclass TestPackage{

  public static void main(String args[]){

           Test t = new Test();          //Test类在p1包中定义

           t.display();

  }

  }

JDK常用包解释

1.java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
2.java.awt----包含了构成抽象窗口工具集(abstractwindow toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
3.java.applet----包含applet运行所需的一些类。
4.java.net----包含执行与网络相关的操作的类。
5.java.io----包含能提供多种输入/输出功能的类。
6.java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

Java API文档

  1. API----Application  Programming Interface
  2. JavaAPI文档是一组超文本文件,提供关于Java类(API)的说明信息:

–类层次

–类的功能性描述

–成员变量列表及详细介绍

–构造方法列表及详细介绍

–其它方法列表及详细介绍

–从父类中继承来的属性及方法列表

  • JavaAPI文档按包组织,在某个类的API文档中还提供了指向关联类的API文档的链接

0 0
原创粉丝点击