天天看点

Java学习笔记(二):面向对象、构造方法、方法重载

一、面向对象与面向过程

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中称为:对象

通过这种方法才能产生一个实例:

4、类方法的调用:

三、权限修饰符

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、构造方法的主要目的,就是初始化对象的各成员的值;

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();
	}
}