从今天开始从零学习JAVA,希望可以认识到更多的朋友,可以让自己的JAVA之路走得更为顺利一些!买了几本书来看也听了几接课,觉得JAVA很吸引我,我想我可以走得更远的.自信是最重要的.
OOP(Object Oriented Programming)描述的是对象与对象之间的相互作用.听老师将面向过程与面向对象的最大区别是: 过程化程序设计先确定算法,再确定数据结构,再确定运算.面向过程编程,习惯于先建立数据结构存放数据并定义方法(函数)来操作数据;而面向对象的则是构建一个模型,将数据与方法组织在一起.
我们可以把现实世界的事物抽象为对象.对象一般都有两个特征:状态(Status),行为(Behavior).软件的对象概念是由显示世界对象抽象而来.把现实世界的状态保存软件对象的变量中;现实世界对象的行为通过软件对象的方法(函数)来实现.
我们把相似的对象划分成一个类.在软件中类就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法).类是创建对象的模板,对象是类的实例.
面向对象编程的难点在于思路的转变.我们通常习惯与考虑解决问题的方法,而不是抽象成对象再去解决它.
类的构造方法
* 构造方法的名字和类名相同,并且没有返回值.
* 构造方法主要用于定义类的初始化状态.
* 我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例.
* Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会提供一个缺省的构造方法,也就是不参数的构造方法.
方法的重载(overload)
重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载.
code:
class Point
{
int x,y;
/*
*带参数的构造方法和不带参数的构造方法就构成了方法(函数)的重载
*/
Point(int a,int b)
{
x=a;
y=b;
}
Point()
{
}
void output()
{
System.out.println(x);
System.out.println(y);
}
public static void main(String[] args)
{
//调用不带参数的构造方法
//Point p=new Point();
//pt.x=10;
//pt.y=20;
//p.output();
Point p1=new Point(3,3); //调用带参数的构造方法
p1.output();
}
}
特殊变量this
* this变量代表对象本身
* 当类中有两个同名变量,一个属于类(类的成员变量),一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量.
* 使用this简化构造函数的调用
code:
class Point
{
int x,y;
/*
*带参数的构造方法和不带参数的构造方法就构成了方法(函数)的重载
*/
Point(int a,int b)
{
x=a;
y=b;
}
Point()
{
this(1,1);
}
void output()
{
System.out.println(x);
System.out.println(y);
}
/*output()方法定义的形参与成员变量同名了,
*那么在output()里就看不到成员变量的x,y了,它被隐藏了.
*/
void output(int x, int y)
{
this.x=x;
this.y=y;
}
public static void main(String[] args)
{
Point pt=new Point(3,3);
pt.output(5,5);
pt.output();
}
}
一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,尽管在内存中可能有多个对象,而数据成员在内的没个对象中都存在着一份拷贝.this变量允许相同的实例方法为不同的对象工作.每当调用一个实例方法时,this变量被设置成引用该实例方法的特定的类的对象.方法的代码接着会与this所代表的对象的特定数据建立关联.