面象对象的基本知识要点
一:类
1.类的声明及实例化
类是面向对象关键,可以说没有类就没有对象;
类由两部分组成,
在上面声明一个类时使用了修饰符"public".在声明类时可以使用三中说明符:public,final和abstract。
public类意味这个类可以被任何对象使用和扩展,而且与他的包无关
final类则表明这个类没有任何子类;
abstract类即说明这个类是一个抽象类;
如果类声明前没有任何修饰符,则默认为protected类,即只有同一个包中的对象才能使用该类。
前面已经说了类有个优点是允许继承,这就说明新建的类可以使用已建类的变量和方法,
public class MyClass extends test{}
其中类MyClss被称为子类,类test被称为父类或超类.
当创建了类后,就可以用new来创建类的一个实例,并不是所有的类都需要创建他的实例,
test mytest=new test();
创建类的实例是为了要引用这个类中的变量或方法,前面已经为类test创建了一个实例mytest,
mytest.changtest();
声明类的变量和声明类类似,前面可以跟上修饰符;变量有以下几种修饰符:
public--变量在所有类中可视;包括包中的类和所有子类。
protected--变量可以被当前类中的所有方法访问,但是在当前包以外的类中不可见。
private--变量只能被当前类中的所有方法访问。
static--声明此变量为静态变量。
final--该修饰符说明此变量的值在运行期间不能被修改。
为什么不把所有变量都声明成全局变量呢?有两个原因:
在类中有两个特殊的变量:this和super;
在以下两种情况中需要使用this变量:
在类中有两个变量同名,其中一个属于当前类而另一个属于某个特定的方法。
当某个类需要将类作为参数传递给某个方法。
以下情况需要使用super变量:
当覆盖方法时,有时候希望使用老方法中的代码,这是可以使用super变量来获取原来的代码。
3.有时候为了做一个项目需要建立一大堆的类,这些类文件就象没有子目录或文件夹的硬盘一样是杂乱无章的,
package packagename;
如果要引用包packagename中的类则用以下方式:
import packagename.*;
以上命令是引用包packagename中的所有类,如果你只引用这个包中的某个类可以用以下方式:
import packagename.classname;
也许有人会问引用整个包中的类不好吗?为什么还要指定是某个类呢?原因有以下几点:
首先当引用不在本地机器上的整个包,程序将通过网络将包的所有文件都拖过来,如果这个包有上千个类,而你只使用其中很少的部分,将浪费很多资源。
如果引用的两个包中有共享的文件名(例如包pack1中有个叫classname的类,pack2中也有个叫classname的类,如果你使用importpack1.*;import pack2.*),你的系统就要崩溃了。
4.下面就用一个例子来详细介绍如何创建,实例一个类: ***********************************************************************************************
二:接口
1.前面讲了类有个重要的特性就是继承,但是一个类只能有一个父类,
public interface interf
值得注意的是,如果使用了扩展的接口,必须将老接口的方法和新接口的方法全部覆盖掉。
2 接口
*1*----接口所用的方法都是public abstract
*2*----在接口声明方法时,不能使用native,static,final,synchronized,private,protected等修饰符。
*3*----和public类一样,public接口也必须也定义在与接口同名的文件中。
*4*----接口中可以有数据成员,这些成员默认都是public static final。
*5*----一个接口可以继承自另一个接口。
*6*----JAVa中不允许类的多继承,但允许接口的多继承。
*7*----在JAVA中,一个类可以实现多个接口。
*8*----一个类在继承另一个类的同时,可以实现多个接口。
例子:
-----一个类实现多个接口-------
<1>类的方法
类的方法分为两中;
1. 静态方法(也叫做类方法),而静态方法不方法,是一种类;
语法:
static 数据类型 方法名();
在main中调用时;
用这个方法在它的类中的
2.非静态方法(也叫做对象方法或实例方法)
语法:
数据类型 方法名();
在main中调用时;
首先创建这个方法的对象
语法:
类名 对象=new 类名();
对象.方法名();
<2>成员变量:
1.非静态变量(实例变量)
语法:
数据类型 变量名;
2.静态变量(类变量)
语法:
static 数据类型 变量名;
*静态方法和静态变量时属于某一个类,而不属于类的对象
*静态方法和静态变量的引用直接通过类名应用
*在静态方法中不能调用非静态的方法和引用非静态的成员变量,反之,则可以
*可以用类的对象去调用静态的方法
<3>常量的定义
语法:
static final 数据类型 常量名=“”
<4>类的继承
class 类名1 extends 类名2
表示 类名1
类名1 是子类
类名2 是父类
<5>覆盖的方法
用super.方法名() 来调用被覆盖的方法
注意:
在用super调用方法时,在super语句前不能有任何语句;
<6>特殊变量this
一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,
尽管在内存中可能有多个对象,而数据成员在类的每个对象所在内存中的存在着一份拷贝
。