码迷,mamicode.com
首页 > 编程语言 > 详细

Java类与对象

时间:2017-09-02 12:09:31      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:类的设计   程序模块化   相同   成员方法   生活   改变   abs   对象数组   设计   

一、基本概念

  类是为了让程序设计语言能更加清楚地描述日常生活中的事物。是对某一类事物+的描述,是抽象的。

  概念上的定义:而对象则是实际存在的属该类事物的具体的个体,所以也称为实例(instance)。

  对象是类的一个实例,是实实在在的个体,一个类可以有多个对象。

  面向对象程序设计思想的重点是类的设计而不是对象的设计。

  类是由数据成员和函数成员封装而成的。数据成员则称为类的属性,函数成员则称为类的行为。

  函数也称为方法,它可以简化程序的结构,也可以节省编写的相同代码的时间,达到程序模块化的目的。

  使用方法 来编写程序可以把特定的功能的程序代码独立出来,这样可以简化代码、精简重复代码的程序流程。

  所以总结来说就是类将某事物的数据与相关功能封装起来,形成一种特殊的数据结构,用以表达真实事物的一种抽象。

二、定义类

  1、定义类实际上就是声明类的属性与方法。

  结构:[类修饰符] class 类名称

  {

    [修饰符] 数据类型 成员变量名称;

    [修饰符] 数据类型 成员变量名称;

    .

    .

    [修饰符] 返回值的数据类型 方法名(参数1,参数2,...)//方法可以不带参数

    {

      语句序列;

      return [表达式];//返回数据类型可以是没有返回值的类型void

    }

    .

    .

  }

  //其中[]表示的内容都可以省略

  2、分析类修饰符的用法

  类修饰符一共有四种分别是public、abstract、final、缺省

  一个类可以有多个修饰符,且无先后之分,但是abstract和final是相互对立,所以不能同时应用在一个类的定义中。

  一个.java文件中可以有多个class(类),但是只能有一个是用public修饰符修饰的,而且这个类的名称必须与.java文件名相同。

修饰符 含义
public 将一个类声明为公共类,它是可以被任何的对象访问
abstract 将一个声明为抽象类,没有实现方法,需要子类提供方法实现,所以不能创建该类的实例
final 将一个类声明为最终类即非继承类,表示它不能被其他的类所继承
缺省 缺省修饰符时,则表示只有在同包中的对象才能使用这样的类

  3、成员变量

   一个类的成员变量可以是简单的变量,也可以是对象数组等结构型数据。

   [修饰符] 变量类型 变量名 [=初值];

  4、分析成员属性的修饰符

    成员属性的修饰符有访问控制符,静态修饰符,最终修饰符,过度修饰符,易失修饰符

    一个成员变量可以被两个以上的修饰符同时修饰,但游戏王修饰符是不能同时定义在一起。

    在定义类的成员修饰符的时候,可以读成员变量进行赋初值,表明成员变量的初始状态,但对成员变量的操作只能放在方法中。

修饰符 含义
public 公共访问控制符,指定该变量为公共的,它可以被任何对象的方法访问。
private 私有访问控制符。指定该变量只能同一个类(当前类)中的方法可以访问,其他类,(包括子类)不能访问此变量。
protected 保护访问控制符。指定该变量只可以被它自己的类及其子类或同一包中的其他类访问,在子类中可以覆盖此变量。
缺省 缺省访问控制符时,则表示在同一个包中的其他类可以访问此成员变量,而其他包中的类不能访问该成员变量。
final 最终修饰符。指定该变量的值不能改变。
static 静态修饰符。指定该变量被所有对象共享,即所有的实例都可使用该变量。
transient 过渡修饰符。指定该变量是一个系统保留,暂无特别作用的临时性变量。
volatile 易失修饰符,指定该变量可以同时被几个线程控制和修改。

   5、类的成员方法。

    类的方法是用来定义对类的成员变量进行操作的,是实现类内部功能的机制,同时也是类与外界进行交互的重要窗口,声明方法的格式如下:

    [修饰符]  返回值的数据类型 方法名(参数1,参数2,...)//可以不用添加参数

    {

      语句序列;

      return [表达式];//可以是没有返回值的void型

    }

   6、分析成员方法的函数的修饰符

    修饰符有多种:包括访问控制访问修饰符,静态修饰符,抽象修饰符,最终修饰符,同步修饰符和本地修饰符   

    同样的是方法的修饰符也是可以同时有多个,但是互斥的修饰符不能同时出现。 

修饰符 含义
public 公共访问控制符。指定该方法为公共的,它可以被任何对象方法访问
private 私有访问控制符。指定该方法只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能方法此方法。
protected 保护访问控制符。指定该方法只可以被它的类及其或者同一包中的其他访问
缺省 缺省访问控制符,则表示在同一个包中的其他类可以访问此成员方法,而其他包中的类不能访问该成语方法
final 最终修饰符。指定该方法不能被重载
static 静态修饰符。指定不需要实例化一个对象就可以激活的方法
abstract 抽象修饰符。指定该方法只声明方法头,而没有方法体,抽象方法需在子类中被实现
synchronized 同步修饰符。在多线程程序中,该修饰符用于在运行前,对它所属的方法加锁,以防止其他线程访问,运行结束后解锁
native 本地修饰符。指定此方法的方法体是用其他语言(如C)在程序外部编写的。

   7、总结一下四种访问修饰符的使用情况 

作用域 当前类 同一包(package) 子孙类 其他包(package)
public
protected ×
friendly(缺省) × ×
private × × ×

    friendly的情况是不写访问修饰符,就是缺省的情况,但是在Java中是不存在friendly这种情况的说法,它是 源自C++。

    访问修饰符修饰class时只能是public,和缺省。并不鞥使用protected和private

    而在使用访问修饰符修饰类的属性时,一般使用private,通过getter和setter方法来访问类的属性。

    8、成员变量与局部变量的区别

    由类和方法的定义可以,在类和方法中均可以定义属于自己的变量。类中定义的变量是成员变量,而方法中定义变量是局部变量。

    (1)、从语法形式上看,成员变量是属性类的,而局部变量是在方法中定义的变量或者是方法的参数;成员变量可以被public、private、 static等修饰符所修饰,而局部变量则不能被访问修饰符及static所修饰;成员变量和局部变量都可以被final所修饰。

    (2)、从变量在内存中的储存方式上看,成员变量是对象的一部分,而对象是存在于堆内存的,而局部变量是存在于栈内存的。

    (3)、从变量在内存中的生存时间上,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而产生,随着方法的结束而自动消失

    (4)、成员变量如果没有被赋值,则会自动以类型的默认值赋值(有一种情况例外,被final西施但没有被static修饰的成员变量必须显式地赋值);而局部变量则不会自动赋值,必须显式地赋值后才能使用。

三、对象的创建与使用

  1、对象时整个面向对象程序设计的理论基础。

     2、一个对象的声明周期:创建—>使用—>销毁

  3、创建某类的对象步骤:

  (1)、声明指向‘由类所创建的对象’的变量

  (2)、利用new运算符创建新的对象,并指派给前面所创建的变量

  例如:Object obj = new Object();//从内存的角度来分析就是,在栈内存中定义了一个变量obj,用来指向通过new运算符在堆内存中创建的一堆Object对象。也就是说变量obj是对存放在堆内存中对象的引用变量,因为它是指向Object类所创建的对象,所以可将视为‘‘对象的名称”,因而简称对象;事实上,obj变量只是对象的名称,它是指向对象实体的变量,而非对象本身。

     4、因为在方法中定义的变量必须进行初始化,否则无法通过编译,所以当一个对象被创建时,会按照其的基本类型来成员变量的初始值。

  5、通过对象来引用对象成员的格式如下:

    对象.对象成员

  6、匿名对象就是,不定义对象的引用变量,直接用new创建的对象来调用对象的方法等。如new Object().xxx();

  7、使用匿名对象的两种情况:

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

    (2)、将一个匿名对象作为参数传给方法调用时,可以使用。

  

  

    

 

Java类与对象

标签:类的设计   程序模块化   相同   成员方法   生活   改变   abs   对象数组   设计   

原文地址:http://www.cnblogs.com/liangxiaojin/p/7464589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!