快速学习javaSE基础4---面向对象的编程

学习面向对象三条主线

1.java类及类的成员
2.面向对象的三大特征
3.其它关键字



学习面向对象,需要懂得的ABCD....

1.java类及类的成员


A.了解面向对象与面向过程

面向对象(OOP)与面向过程
二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
面向对象的三大特征
封装 (Encapsulation)
继承 (Inheritance)
多态 (Polymorphism)

B.面向对象的思想概述

程序员从执行者转化成了指挥者。
完成需求时:
先去找具有所需功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
(class)对象(object)是面向对象的核心概念。
类是对一类事物描述,是抽象的、概念上的定义
对象是实际存在的该类事物的每个个体,因而也称实例(instance)。
属 性:对应类中的成员变量
行 为:对应类中的成员方法



C.类的语法格式及其成员定义:

自定义类时,需要遵循的步骤:

1.定义类(考虑修饰符、类名)
2.编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
3.编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

定义一个类:

修饰符 class 类名 {

  属性声明; 

    方法声明;

  }

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

  类的正文要用{  }括起来

                                注意:不能在类当中再创建一个类,但是,可以引用。
1.属性声明部分:
语法格式:

修饰符 类型 属性名=初值;

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

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

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


补:变量的分类:成员变量与局部变量

方法体外,类体内声明的变量称为成员变量。
方法体内部声明的变量称为局部变量。

注意:二者在初始化值方面的异同:

         同:都有生命周期     

         异:局部变量除形参外,需显式初始化。

成员变量:
成员变量定义在类中,在整个类中都可以被访问。
成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。
成员变量有默认初始化值。
成员变量的权限修饰符可以根据需要,选择任意一个

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。



局部变量
局部变量只定义在局部范围内,如:方法内,代码块内等。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值,每次必须显式初始化
局部变量声明时不指定权限修饰符


2.方法声明部分

语法格式:

修饰符 返回值类型 方法名参数类型 形参1参数类型 形参2….){

  程序代码

  return 返回值;

其中:

说明:

修饰符:public, private, protected等。

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

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

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

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

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

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


方法是类或对象行为特征的抽象,也称为函数。

Java里的方法不能独立存在,所有的方法必须定义在类里

3.方法调用:
没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
定义方法时,方法的结果应该返回给调用者,交由调用者处理。
方法中只能调用方法,不可以在方法内部定义方法。

4.方法的重载
概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
特点:
与返回值类型无关,只看参数列表且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。



D.对象的创建与使用
使用new +构造创建一个新的对象;
使用“对象名.对象成员”的方式访问对象成员(包括属性和方法);

类的访问机制:
在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static编译不通过。
在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。

***匿名对象 
我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。
Ø如:new Person().shout();
使用情况:
如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
我们经常将匿名对象作为实参传递给一个方法调用

2.面向对象的三大特征


A.封装和隐藏

Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()setXxx()实现对该属性的操作,以实现下述目的:

隐藏一个类中不需要对外提供的实现细节;
使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
便于修改,增强代码的可维护性;

Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限。




B 构造器(方法)

构造器的特征
它具有与类相同的名称
它不声明返回值类型。(与声明为void不同)
不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

构造器的作用:创建对象;给对象进行初始化
如:Ordero = new Order();    Person p = new Person(Peter,15);
如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。

语法格式:

修饰符 类名(参数列表) {

      初始化语句;

}

举 例:

public class Animal {

private int legs;

public Animal() {legs = 4; }    //构造器

public void setLegs(inti) { legs = i; }

public intgetLegs(){returnlegs;}

}

创建Animal类的实例:Animal a=new Animal();   

//调用构造器,将legs初始化为4。


3.其它关键字


A.关键字—this
在java中,this关键字比较难理解,它的作用和其词义很接近。
它在方法内部使用,即这个方法所属对象的引用;
它在构造器内部使用,表示该构造器正在初始化的对象。 this表示当前对象,可以调用类的属性、方法和构造器
当在方法内需要用到调用该方法的对象时,就用this

使用this,调用属性、方法

1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员

2.在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性

3.this可以作为一个类中,构造器相互调用的特殊格式

4.使用this()必须放在构造器的首行!

5.使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。


B.关键字- package

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

  package顶层包名.子包名 ;

  举例:pack\Test.java

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

  public class Test{

         public void display(){

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

         }

  }

包对应于文件系统的目录,package语句中,用.”来指明包(目录)的层次;
包通常用小写单词,类名首字母通常大写。
包帮助管理大型软件系统:将语义近似的类组织到包中;解决类命名冲突的问题。
包可以包含类和子包。


c.关键字—import
为使用定义在不同包中的Java类,需用import语句来引入指定包层次下所需要的类或全部类(.*)。import语句告诉编译器到哪里去寻找类。
语法格式:
  import  包名[.子包名…]. <类名 |*>
l应用举例:

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

  public class TestPackage{

  publicstatic void main(String args[]){

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

            t.display();

  }

     }

注意:
若引入的包为:java.lang,则编译器默认可获取此包下的类,不需要再显示声明。
import语句出现在package语句之后、类定义之前
一个源文件中可包含多个import语句
可以使用import lee.* ;语句,表明导入lee包下的所有类。而lee包下sub子包内的类则不会被导入。import lee.sub.*;
import语句不是必需的,可坚持在类里使用其它类的全名
JDK1.5加入importstatic语句

JDK中主要的包介绍
1.java.lang----包含一些Java语言的核心类,如String、Math、Integer、

                              System和Thread,提供常用功能。

2.    java.net----包含执行与网络相关的操作的类和接口。

3.    java.io  ----包含能提供多种输入/输出功能的类。

4.  java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、

                            使用与日期日历相关的函数。

5.     java.text----包含了一些java格式化相关的类

6.     java.sql----包含了java进行JDBC数据库编程的相关类/接口

7.     java.awt----包含了构成抽象窗口工具集(abstractwindow toolkits)的

                             多个类,这些类被用来构建和管理应用程序的图形用户界 

                             面(GUI)。

8.     java.applet----包含applet运行所需的一些类。


posted @ 2017-04-06 14:51  keepgoon  阅读(120)  评论(0编辑  收藏  举报