黑马程序员技术交流社区
标题:
简述面向对象关键字的使用和区别?
[打印本页]
作者:
朱玉祥
时间:
2013-6-5 18:04
标题:
简述面向对象关键字的使用和区别?
本帖最后由 孙百鑫 于 2013-6-22 00:52 编辑
例如Static abstract final private 等等。。。
作者:
王瀛
时间:
2013-6-5 18:24
就这样直白的说,略不好说,就说个大概吧。
static是静态。类中被静态修饰的内容随着类的加载而存在于方法区中。如果一个数据是共享数据,一般使用静态修饰符修饰(如:一个班级共用一台饮水机)。
静态方法只能调用静态成员。
abstract是抽象修饰符。一个方法如果只定义了方法名而没有具体实现方法主体,则被abstract修饰。一个类中如果有抽象方法,该类必须被声明是抽象类。子类继承抽象父类或者接口后,必须复写抽象方法,并以不低于父类对应方法权限的修饰符修饰。
final是终极,最终。被final修饰的类是最终类,该类不可被继承。被final修饰的方法不可被子类复写。被final修饰的变量只能被赋值一次,是常量
在接口(interface)中,所有的方法默认修饰符是 public abstract,变量的默认修饰符是 public static final
private是权限修饰符的一种,表示私有、专用。被private修饰的方法或者变量,外界无法直接访问,一般在类中会定义set或者get方法对其进行设置和获取。父类被private修饰的方法,子类是不可能复写的。
其他权限修饰符有public protacted default private
public protected default private
同一个类中 ok ok ok ok
同一个包中 ok ok ok
子类 ok ok
不同包中 ok
作者:
夜默
时间:
2013-6-5 18:27
private 私有 权限修饰符
用于修饰类中的成员(成员变量,成员函数)只有在本类中有效。
私有仅是封装的一种表现形式
对外提高访问方式,可以在访问方式中加入逻辑判断等语句
对访问的数据进行操作,提高代码的健壮性。
static 静态关键字 修饰成员(成员变量、成员函数)
修饰之后成为 类变量
静态修饰内容被对象共享 节省空间 但生命周期过长 访问出现局限性 只能访问静态
被静态修饰后,出了被对象调用后,还可以直接用类名.静态成员调用
特点:随着类的加载而加载 生命周期长
优先于对象存在
被所有对象所共享
可以直接被类名所调用
实例变量和类变量的区别
1.存放位置 类变量随着类的加载而存在于方法区中
实例变量随着对象的建立而存在于堆内存中
2.生命周期
类变量随着类的消失而消失 生命周期长
实例变量随着对象的消失而消失 生命周期短
注意事项:
1.静态方法只能访问静态成员,.非静态方法都可以访问
2.静态方法中不可以定义this、super关键字
静态优先于对象存在,所以静态方法不可以出现this
3.主函数是静态的
静态的应用
对象中出现共享数据时,该数据被静态所修饰
对象中的特有数据要定义成非静态存在于对内存中
功能内部没有访问到非静态数据(特有数据),则该功能定义成静态的
将共性的功能抽取,独立封装,以便复用
如果不需要对象,也没有特有数据,可以将方法定义成static,直接通过类名调用即可,将构造函数私有化,则不能建立该类的对象 达到封装的目的
extends 继承关键字
1.提高了代码的复用性
2.让类于类产生了关系,才有了多态的特性
注意: 千万不要为了获取其他类的功能,简化代码而继承。必须是类于类之间具有所属关系才可以继承。
final 最终 修饰符
1. 修饰类、方法、变量
2. 被final修饰的类不可以被继承 打破了封装性 为了避免被继承,被子类复写功能
3. 被final修饰的方法不可以被复写
4. 被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,又可以修饰局部变量。 一些数据的出现值是固定的,例如π,为了增强阅读性,就给这些值起个名字,方便阅读,被final修饰,这个值就不能改变了.
抽象类: adstract 关键字 抽象类不可以实例化
抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。 不多见
1. 抽象方法一定在抽象类中
2. 抽象方法和抽象类都必须被adstract关键字修饰
3. 抽象类不可以用new创建对象,因为调用抽象方法没意义
4. 抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用
如果子类值覆盖了部分抽象方法,那么该子类还是一个抽象类
抽象方法没有方法主体,也就是大括号。
作者:
张俊迪
时间:
2013-6-5 19:41
王瀛 发表于 2013-6-5 18:24
就这样直白的说,略不好说,就说个大概吧。
static是静态。类中被静态修饰的内容随着类的加载而存在于方法 ...
在不同包中也可以继承父类中的protected修饰的成员变量和方法吧
作者:
夜默
时间:
2013-6-10 10:46
楼主你好 如果帖子的问题已经解决,请把帖子的类型改为“已解决”。
作者:
孙百鑫
时间:
2013-6-22 00:51
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2