java知识总结(二)类和对象

来源:互联网 发布:刀具路径模拟软件 编辑:程序博客网 时间:2024/05/21 18:41

java总结二 类和对象

首先建一个Demo类作为示例

public class Demo {//类//属性(成员变量)private int sex;//私有的成员变量//方法(成员函数)public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;}//构造函数Demo(){}}

要点一:

Demo就是一个类,而对象就是把Demo实例化。相当于Demo就是一个蓝本,我们要使用原材料(内存空间、数据等)将Demo展现出来。如:

Demo demo = new Demo();//demo就是实例化的对象demo.getSex();//这就是demo对象的一个行为

注:在实际开发中,Demo类的属性(sex)通常被用来存储数据,而get、set方法用来操作对象的属性。这也是约定俗成的一个规范。

要点二:

构造函数:给与之对应的对象进行初始化(new Demo),所有对象创建时,必须初始化之后才能使用。构造函数通常有如下特点:

1、函数名与类名相同 

2、不需要定义返回类型 

3、没有明确的返回值

注:所有的类都有默认的构造函数,通常这个构造函数是无参数的。如果我们定义了新的构造函数,那么在实例化的时候就会使用我们定义的构造函数。构造函数在实例化的时候调用,并且只会调用一次。

要点三:

为什么要使用面向对象?

1、将事情简单化

2、将之前过程中的指挥者变成执行者

3、符合现在人们的思维方式

在Demo中,sex和关于sex的一些方法被封装到Demo中,这就称为对象的封装。当实例化Demo之后,实例化的Demo就可以操作sex的方法,这被称为对象的行为。

要点四:

在实际编程中,我们经常会用到例如:

new Demo().getSex();
对Demo进行这样的使用,这里实例化的对象称为匿名对象,在只使用一次的情况下可以这样使用。

要点五:

创建一个对象的过程:

1、加载文件到内存
2、执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。
3、在堆内存中开辟一个实体空间,分配了一个内存首地址值。new
4、在该实体空间中进行属性的空间分配,并进行了默认初始化。
5、对空间中的属性进行显示初始化。
6、进行实体的构造代码块初始化。
7、调用该实体对应的构造函数,进行构造函数初始化。()
8、将首地址赋值给p ,p变量就引用了该实体。(指向了该对象)

要点六

类的访问权限

public:
1、对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中。
对于类来说:    也是一样。
2、无声明:
对于成员来说:如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,同一个包内其它类可以访问,但包外就不可以。对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件中,虽然没有引入package,但隶属于相同的default package。
对于类来说:同一个包中的类可以用。总之,类只可以声明为public或者无声明。
3、private:
对于对于成员来说:只能在该成员隶属于的类中访问。
对于类来说:类不可以声明为private。
4、protected:
对于对于成员来说:相同包中的类可以访问(包访问权限);基类通过protected把基类中的成员的访问权限赋予派生类不是所有类(派生类访问权限)。
对于类来说:类不可以声明为protected
说明:
1、每个编译单元(类文件)都仅能有一个public class
2、public class的名称(包含大小写)必须和其类文件同名。
3、一个类文件(*.java)中可以不存在public class。
   这种形式的存在的场景:如果我们在某个包内撰写一个class,仅仅是为了配合同包内的其他类工作,而且我们不想再为了撰写说明文档给客户(不一定是现实意义的客户可      能是调用这个类的类)看而伤脑筋,而且有可能过一段时间之后有可能会彻底改变原有的做法,并完全舍弃旧版本,以全新的版本代替。
4、class不可以是private和protected。
5、如果不希望那个任何产生某个class的对象,可以将该类得所有构造函数设置成private。但是即使这样也可以生成该类的对象,就是class的static的成员(属性和方法)可以办到。



4 0