一、面向对象与面向过程
C语言是一个面向过程程序设计语言,在面对编程问题时,C语言实现的思想角度是:解决这个问题需要哪些过程,及这些过程的进一步细分,最终形成一个个功能函数,通过组合、协调这些函数,最终实现这个过程。
Java是一个面向对象程序设计语言,在面对同样的问题时,首先思考的是,问题本身由哪些”部件“(对象)组成;这些部件本身有哪些属性(成员)和操作(方法):部件和部件之间有什么内在联系,以及部件是如何联系起来的,最终也能实现目的。
面向对象编程思想的目标是代码复用
二、类
面向对象编程思想的核心
1、类包含两个要素:数据和操作
即类型,定义一个类,就等于产生了一种新的数据类型,与C语言中的struct异曲同工。但是类不单有数据,还有操作噢。
2、定义一个类:
class SimplePoint{
int row;
int col;
void printPoint(){
System.out.println("+row+","+col+");
}
void moveTo(int newRow,int newCol){
row=newRow;
col=newCol;
}
}
上述代码定义了两个数据成员:row和col
两个函数成员 printPoint()和moveTo()即类的方法
3、类的实例在Java中称为:对象
通过这种方法才能产生一个实例:
SimplePoint point = new SimplePoint();
4、类方法的调用:
point.printPoint();
三、权限修饰符
1、public 修饰的成员和方法,可以在类外任意访问;
2、private 修饰的成员和方法,只能在类的内部进行访问;
通常情况下,类的成员都需要private保护,而类的方法都是public的,以便方便调用
(简单介绍一下)
四、构造方法
按照自己的意愿给类的成员赋初值
一个类如果没有书写构造方法,则Java的jvm在对该类实例化时,将自动执行一个由JVM提供的默认的构造过程;而且在这个过程中,会对类成员按如下规则赋初值:
0(byte类型、char类型、short类型、int类型和long类型)
0.0(float类型和double类型)
false(Boolean类型)
其他所有类类型对象,都将赋初值为null
构造方法的基本规则:
1、构造方法必须与类同名;
2、构造方法不能声明其返回值类型(void都不行);
3、构造方法只能被JVM自动调用,用户不能调用构造方法;
4、构造方法只能在类实例化对象时,(被”new“)调用;
5、构造方法的主要目的,就是初始化对象的各成员的值;
SimplePoint pointone = new SimplePoint();
new的内部操作
1、申请SimplePoint类的一个实例空间;
2、完成对该实例空间中各成员赋初值(调用构造方法);
3、将实例空间的首地址赋值给对象pointone;
对象的本质就是指针变量
代码实例:
public class Point {
private int row;
private int col;
public Point() {
}
public Point(int row, int col) {
setRow(row);
setCol(col);
}
public Point(int row) {
setRow(row);
setCol(0);
}
public void setRow(int row) {
if(row<=0||row>25) {
row=1;
}
this.row=row;
}
public void setCol(int col) {
if(col<0||col>80) {
col=1;
}
this.col=col;
}
public void printPoint(){
System.out.println("("+row+","+col+")");
}
}
public class Test {
public static void main(String[] args) {
Point pointone =new Point();
pointone.setRow(20);
pointone.setCol(99);
pointone.printPoint();
Point pointtwo=new Point(13);
pointtwo.printPoint();
Point pointthree = new Point(5,10);
pointthree.printPoint();
}
}
五、方法的重载
方法重载的基本规则:
1、方法名称相同;
2、参数个数或者参数类型不同;
3、返回值类型的差异不是方法重载的决定因素;
4、构造方法也可以重载,只要满足前两点规则;
代码实例:
public class SimplePoint {
private int row;
private int col;
public SimplePoint() {
}
public void setRow(int x) {
if(x<0||x>25) {
x=1;
}
row=x;
}
public void setCol(int y) {
if(y<0||y>80) {
y=1;
}
col=y;
}
public void setPoint(int x,int y) {
setRow(x);
setCol(y);
}
public void setPoint(int x) {
setPoint(x, 0);
}
public void setPoint(SimplePoint source) {
setPoint(source.row,source.col);
}
public void printPoint() {
System.out.println("("+row+","+col+")");
}
public void moveTo(int newRow,int newCol) {
row=newRow;
col=newCol;
}
}
public class DemoSimplePoint {
public static void main(String[] args) {
SimplePoint pointone = new SimplePoint();
pointone.setPoint(10, 20);
System.out.println("演示双参赋值结果:");
pointone.printPoint();
pointone.setPoint(5);
System.out.println("演示单参赋值结果:");
pointone.printPoint();
SimplePoint pointtwo=new SimplePoint();
System.out.println("演示 实例赋值 结果:");
pointtwo.setPoint(pointone);
pointtwo.printPoint();
}
}