
类与对象
文章平均质量分 58
yakihappy
电信领域的计算机软件开发人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
构造器Constructor
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。构造器用来确保每个对象都会得到初始化。当对象被创建时,如果该类具有构造器,java就会在用户有能力操作对象之前自动调用相应的构造器,所以保证了初始化地进行。在java中创建和初始化被捆绑在了一起,两者不能分离。注意构造器没有返回值,与返回值为空(void)明显不同。如果不想被实例原创 2009-03-11 11:25:00 · 1944 阅读 · 2 评论 -
对象创建过程/初始化顺序
Java虚拟机创建一个对象都包含以下步骤。(1)给对象分配内存。(2)将对象的实例变量自动初始化为其变量类型的默认值。 (3)初始化对象,给实例变量赋予正确的初始值。 对于以上第三个步骤,Java虚拟机可采用3种方式来初始化对象,到底采用何种初始化方式取决于创建对象的方式。(1)如果对象是通过clone()方法创建的,那么Java虚拟机把原来被克隆对象的实例变量的值拷贝到新对原创 2009-03-11 11:31:00 · 1455 阅读 · 0 评论 -
什么是java序列化,如何实现java序列化?
Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。序列化就是原创 2009-03-11 11:34:00 · 266244 阅读 · 28 评论 -
对象的强,软,弱,虚引用
对象的可触及性: 可触及状态:刚被创建的对象即处于此状态。 可复活状态:当程序不再有任何引用变量引用此对象时,就进入可复活状态 这个状态垃圾回收器准备回收。在释放之前调用finalize()方法;这些对象的finalize()方法可能把对象重新转到可触及状态。 不可触及状态:当java虚拟机执行完对象的finalize()方法后,对象没有赚到可触及状态,就进入不可触及状态 ,原创 2009-03-11 13:52:00 · 488 阅读 · 0 评论 -
访问权限
作用域 当前类 同一package 子孙类 其他packagepublic √ √ √ √protected √ √ √ ×friendly √ √ ×原创 2009-03-11 11:23:00 · 403 阅读 · 0 评论 -
Java类库中的包
1.java.lang 提供常用的类、接口、一般异常、系统等编程语言的核心内容。如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包。java.lang包中的元素:(1)接口摘要:Cloneable接口;Comparable接口;Iterable接口;Runnable接口。 (2)类摘要Boolean Boolean 类将基本类型为 boole原创 2009-03-11 11:24:00 · 991 阅读 · 0 评论 -
类变量,实例变量
1) 实例变量和类变量 每个对象的实例变量都分配内存; 类变量(即static变量)仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。 区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对原创 2009-03-11 11:25:00 · 687 阅读 · 0 评论 -
反射机制
反射机制最重要的部分是准许你检查类的结构。java.lang.reflect包中的三个类Field、Method、Constructor相应的描述了一个类的字段、方法、构造函数。使用这些类的时候必须要遵循下面步骤:第一步是获得你想操作的类的 java.lang.Class 对象。下面就是获得一个 Class 对象的方法之一:Class c = Class.forName("java.la原创 2009-03-11 11:32:00 · 3604 阅读 · 2 评论 -
句柄与引用
1.句柄(handle) 为了区别引用类型的变量标识符和基本数据类型变量标识符,我们特别的使用Handle来称呼引用类型的变量标识符。 A a; //a里面存放地址。但未初始化,所以里面的值为null。 B b1,b2;// b1, b2里面存放地址。但未初始化,所以里面的值为null。 String s; //s里面存放地址。但未初始化,所以里面的值为null。2.引用原创 2009-03-11 13:14:00 · 2320 阅读 · 0 评论 -
面向对象的特征有哪些方面,OOP的好处
类是具备某些共同特征的实体的集合,它是一种抽象的概念,用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。类定义了类的元素(属性和方法),实际上,类也可理解为带方法的类型。1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种类的层次模型,允许原创 2009-03-11 11:21:00 · 1005 阅读 · 0 评论 -
写clone()方法时,通常都有一行代码,是什么?
在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。使用clone()来复制一个对象,clone()从Object类继原创 2009-03-11 11:31:00 · 3220 阅读 · 1 评论 -
多态的机制是什么?
多态性是指在一个程序中同名的不同方法共存的情况,允许不同类的对象对同一消息作出不同响应。静态多态性即是编译时的多态 这种多态采用函数重载(模板)来实现,编译器对对象静态绑定,编译之后就决定了调用哪一个成员函数。覆盖:在子类中直接定义的和父类同名的属性和方法,在子类的使用中, 子类覆盖父类 ;重载:在同一个类中可以有多个同名的方法(不同的形参,不同的实现)。 调用时根据形参的个数和类型来决定调用原创 2009-03-11 11:26:00 · 1523 阅读 · 0 评论 -
Overload和Override的区别
重写Overriding是父类与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。重载Overloading是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Ove原创 2009-03-11 11:27:00 · 375 阅读 · 0 评论 -
Object类中的方法
public class Object{public Object();//7个公共实例方法public boolean equals(Object obj);// 用来比较以参数传递过来的对象和当前对象是否相等(必须是同一对象,才算相等。而在String中使用equals()方法时,只要字符串一样就算时相等,不要求是同一字符串的不同引用,只有用String类中“==”运算符时,才比较原创 2009-03-11 11:29:00 · 439 阅读 · 0 评论 -
equals与hashcode
例:两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?不对,有相同的hash code。首先equals()和hashcode()这两个方法都是从object类中继承过来的。 equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this ==原创 2009-03-11 11:29:00 · 1258 阅读 · 2 评论 -
java中创建对象的方法
有4种显式地创建对象的方式:1.用new语句创建对象,这是最常用的创建对象的方式。2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 3.调用对象的clone()方法。4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.原创 2009-03-11 11:30:00 · 3695 阅读 · 0 评论 -
abstract class和interface有什么区别
抽象类用于要创建一个体现某些基本行为的类,不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。abstract方法不能被声明为private,因为abstract类会被其他类继承。无法生成一个abstract类的对象,但可声明一个abstract类类型的变量。(is-a)接口中所有方法都是抽象的。多继承性可通过实现这样的接口原创 2009-03-11 11:22:00 · 466 阅读 · 0 评论 -
常用的类,接口
常用的接口:1.java.lang.Cloneable可克隆接口。可以通过Object.clone()方法将类的实例对象的域(field)逐个复制到同一个类的另外一个实例中。2.java.lang.Comparable可比较接口。实现了该接口的类的两个实例对象之间可以进行比较。比较结果负数(-1)、0、正数(1)分别代表比较对象与被比较对象之间的关系分别是小于、等于、大于。可对实现了原创 2009-03-11 11:23:00 · 378 阅读 · 0 评论 -
继承时类的构造函数?
当一个类继承另一个类的时候,它调用构造函数,一般是先调用被继承那个类的构造函数,如果父类中没有带参数的构造函数的话,子类会调用默认的构造函数;如果你的父类有带参数的构造函数的话,这个带参数的构造函数就会覆盖默认的构造函数,这样,你的子类就必须会去调用带有参数的父类的构造函数。派生类必须调用基类的构造函数,但不继承基类的构造函数,实际上不继承是句废话,因为构造函数不能通过类的实例来调用。任何一个原创 2009-03-11 11:27:00 · 3255 阅读 · 1 评论 -
多重继承有什么缺陷。
在《设计模式》一书中,作者在开篇中就提出了面向对象的两条基本设计原则:1、多对接口编程,少对实现编程。2、多使用聚合,少使用继承。继承的过多使用当然会带来高耦合,当然聚合的过分会使模块过多。多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能,是一种图状层次结构(有向无环图)。功能强大,但易引起二义性,占用内存比较多。有时多重继承会出现二义性,比如class原创 2009-03-11 11:28:00 · 867 阅读 · 0 评论 -
TableModel.JTable和AbstractTableModel
建立一个JTable控件很简单,直接使用他的构造方法,如建立一个显示二维数组数据的表格,且可以显示列的名称:JTable(Object[][] rowData,Object[] columnNames) 这里rowData的二维数组是指表格的行内容,columnNames的一维数组是指表格的标题,这样就可以建立个简单的表格。这样建立的表格是固定的,而要实现行的删除、增加与插入那么我们原创 2009-04-14 15:29:00 · 7262 阅读 · 1 评论