黑马程序员技术交流社区

标题: 简述面向对象关键字的使用和区别? [打印本页]

作者: 朱玉祥    时间: 2013-6-5 18:04
标题: 简述面向对象关键字的使用和区别?
本帖最后由 孙百鑫 于 2013-6-22 00:36 编辑

例如Static abstract  final private 等等。。。
作者: 朱志江    时间: 2013-6-5 20:32
这个,说实话有点太多了.先说一下你说的这些.
static的意思是静态,静态优先于非静态,非静态成员不能访问静态成员,被静态修饰的方法,在权限足够大的情况下,可以直接类名点方法名进行调用;

abstract的意思是抽象.抽象方法必须存放在抽象类当中,子类继承抽象类,必须将抽象类中的所有抽象方法进行覆写,子类才能进行实例化(也就是创建对象的意思).如果一个类中所有的方法都是抽象方法,那么可以将此类定义为一个接口(interface),接口中全部都为抽象方法.并且方法与常量有固定格式修饰,常量的修饰格式为:public static final;抽象方法的修饰格式为:public abstract.即使在书写中不添加public abstract那么,系统也会自动会为接口添加默认修饰符


final 是最终的意思,final可以用于修饰类,修饰成员变量与成员方法;
①被final修饰的类不可以被实现不可以被继承
②被final修饰的成员变量为一个常量,不可以进行二次赋值
③被final修饰的方法是最终方法,可以继承,但是不可以被覆写

private 的意思是私有.私有可以进行修饰成员变量与成员方法,被私有修饰的只可以在本类中进行调用,如果想访问被private修饰的本类成员变量,必须提供一个权限足够大的成方法进行访问,或者在构造函数中进行初始化访问.

再说点其它的,
用于定义数据类型的关键字
  class(类)
  
  interface(接口)
  
  byte(整型-128~127)
  
  short(-32768~32767)
  
  int(默认的,32个2进制表示,2的31次方)
  
  long(超过int类型)
  
  float(单精度浮点数)
  
  double(双精度浮点数,默认)
  
  char(字符类型)
  
  boolean(true,false)
  
  void(空)
  
  


  
用于定义数据类型值的关键字
  true(对)
  
  false(错)
  
  null(空)
  
  
  
用于定义流程控制的关键字
  if(判断语句,如果)
  
  else(与if配对使用,if判断错误的话,else生效)
  
  switch(选择语句)
  
  case(与switch配对使用,条件匹配,则执行case下面的语句,遇到break跳出)
  
  default(与switch配对使用,条件都不匹配,则执行default下面的语句,遇到break跳出)
  
  while(不确定循环次数下的循环)
  
  do(与while搭配使用,先执行一次,然后进行判断是否继续循环)
  
  for(确定循环条件下的循环语句)
  
  break(用于循环语句,如果满足条件,跳出循环语句)
  
  continue(用于循环语句,如果满足条件,继续循环语句)
  
  return(跳出函数语句,但是如果try,finally语句中,finally即使在try,catch中有return,finally仍然会执行)
  
  


  

用于定义访问权限修饰符的关键字
  private(私有)
  
  protected(受保护的)
  
  public(共有的)
  
  

  
用于定义类,函数,变量修饰符的关键字
  abstract(抽象)
  
  final(最终)
  
  static(静态)
  
  synchronized(同步的,用于多线程同步,解决多线程安全问题)
  
  
  
用于定义类与类之间关系的关键字
  extends(继承)
  
  implements(实现)
  
  

  
用于定义建立实例及引用实例,判断实例的关键字
  new(新建)
  
  this(本类引用)
  
  super(父类引用)
  
  instanceof(判断引用数据类型)
  
  
  
用于异常处理的关键字
  try(捕获异常,将可能有异常的语句写入到try下)
  
  catch(捕获异常,将异常处理的内容写入到catch下)
  
  finally(捕获异常,无论如果都会执行的语句)
  
  throw(在方法内部进行抛出异常)
  
  throws(用于在函数上声明异常)
  
用于包的关键字
  package(包)
  
  import(导入)
  
  

  
其他修饰符关键字(以下不常用,但是仍为关键字)
  native
  
  strictfp
  
  transient
  
  volatile
  
  assert
  


备注:以上两个表格引用自传智播客毕老师视频中的PPT里面,但是自己做了一些补充


希望对楼主能起到实质上的作用

作者: 杜光    时间: 2013-6-5 21:57
下面是我在快看完一遍毕老师视频和平时搜集网上的记的一些给你看一下,只有方法没有区别,不过知道用的方法,自然能领悟到区别了!

【static方法】

1. 静态方法只能调用静态成员,不能调用非静态成员。非静态方法可以调用静态成员,也可以调用非静态成员;
2. 在静态方法中不允许出现 this , super 关键字。this代表对象,而静态方法执行时还没有对象;
3. 主函数是静态的。静态是有访问局限性的,只能访问静态的内容;
4. 静态的数据放在方法区,随着类的加载而加载,随着类的消失而消失;  
5. 成员变量的值是否每一个对象相同,是,用static修饰;不是,不用static修饰,让这些存储到每个对象中;
6. 当函数中访问到了对象的特有属性时,该函数不能被静态修饰。如果函数中没有访问到对象的特有属性,就可以被静态修饰。

【调用成员的方式:】
       1.类名调用(必须保证调用的是静态成员); 类名.方法();
       2.对象调用   new  对象().方法();
【静态成员变量 和 非静态成员变量的区别】
1. 非静态成员变量 又称为实例变量;
       静态成员变量又称为类变量;
2. 非静态成员变量,随着对象的创建而存在,随着对象的消失而消失;
       静态成员变量,随着类的加载而存在,随着类的消失而消失。
3. 非静态变量存在于对象堆内存中,
       静态变量存在于方法区中;
4. 非静态变量只能被对象所调用;
       静态变量可以被类名调用,也可以被对象调用。

如果一个类中定义的方法都是静态的,说明这个类是不需要对象的。
       所以要在本类中加入一些强制措施。——构造函数;
       private Test(); // 将构造函数私有化。





【abstract用法】
1.abstract修饰的类中必须要有abstract修饰的方法,但是在普通类中,可以有带有abstract的方法,也可以没有,否则编译出错;
2.abstract 修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员不可以和 static 、virtual 一起使用。



【final用法】

1. final是一个修饰符,既可以修饰类,又可以修饰方法,还可以修饰变量;
2. final修饰的类不可以被继承;
3. final修饰的方法不可以被覆盖;
4. final修饰的变量是一个常量,只能赋值一次。并且这个常量是一个显式赋值的,默认的值不能修饰;
5.为了将固定的一些数据方便使用,会给这些数据起一个容易阅读的名称;
6.为了防止名称存储的数据改变,用final修饰,一般为final修饰的变量名称都是大写字母组成,如果有多个单词,每个单词之间用下划线分隔;
7.final修饰的显式的赋值,不能修饰默认的值;
8.在开发时,一旦程序中有出现固定的数据,一定要将其用一个容易阅读的名称存储,并final修饰。


【private用法】
1.私有的数据只在本类中有效。其他程序创建对象是无法直接访问的;
2.权限修饰符,用于修饰成员(成员变量 和成员函数),注意 一定是——>成员变量、成员函数。


作者: 孙百鑫    时间: 2013-6-22 00:35
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2