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中称为:对象
通过这种方法才能产生一个实例:

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();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值