Java学习日记2——面向对象编程

Java学习日记2——面向对象编程认识

Java编程基础认知:Java学习日记1——基础认知
对象概念——object
 在现实世界中:现实世界的一个实体
 在计算机中:可以标识的存储区域
类的概念
类是具有共同属性和行为的对象集合
 属性:变量
 行为:方法(函数)
例如:

public class person //定义person类
{
	int age;//类的变量——年龄
	String name;//类的变量——姓名
	void say() //类的方法——说话
	{
		System.out.println("hello word !");
	};
···//此处可以添加更多的方法,如吃饭、走路等等。
}

 从上述代码块中可以看出,定义的类是person,这个类中包含的变量有年龄、姓名等,包含的方法则有说话、吃东西等。
对象与类的关系
 对象是类的实例化表现,而类是对象的抽象(模板)。还是通过具体的代码展示进行讲解:

	person p = new person();//此时p就是对象,而person是类
	p.say();//如果需要使用类中的方法,直接利用[ 对象.方法 ]即可

 这样就可以理解为person是我们定义的类,而p是我们所要操作的编程对象。如果需要引用person类中的方法,则可以使用p.say()的方式进行引用。
面向对象编程的特点
 1.封装性:面向对象编程具有的封装特性是指将属性和行为都封装在类中,将类封装成模块化的形式,程序可以定义很多类。从而实现将类的细节隐藏起来,用户通过受保护的接口访问某个类。例如上文中的例子,person类中的say()方法怎么实现输出hello word !的,外部不可知,只通过say()进行调用以实现这样的功能。这样设计程序更加简单和容易理解。
 2.继承性:子类和父类之间共享数据和方法

class student extends person
{
	String school;//相对于person类,student类新增的属性变量学校
	double score;//相对于person类,student类新增的属性变量分数
	void study()//新增的方法学习
	{
		println("学习中...");
	};
	...//可以添加更多方法
}

 这时student类中包含了person类的所有属性和行为,同时又增加了新的属性和行为。这样就可以不用再写person所含有的属性和行为,提高代码的重用率,方便书写代码。减少工作量。
 3.多态性:不同的对象收到同一个消息,可能产生完全不同的效果,实现的细节由接收对象自行决定。类似的情况如下代码:

Test(person p){p.say();}//定义的是Test函数包含一个person对象p,调用say()函数
Test(new student());//那么此时则会调用student类的say()函数,那么可能输出的内容将会不同

完整的测试程序如下:

//person.java文件
public class person {
	int age;
	String name;
	void say() 
	{
		System.out.println("hello word !");
	};
}

class student extends person
{
	String school;//相对于person类,student类新增的属性变量学校
	double score;//相对于person类,student类新增的属性变量分数
	void say() //属于对say函数的重新定义
	{
		System.out.println("student !");
	};
	void study()//新增的方法学习
	{
		System.out.println("学习中...");
	};
}
//persontest.java文件
public class persontest
{
	private static void test(person p) {
		// TODO Auto-generated method stub
		p.say();
	}
	public static void main(String[] args)
	{
		test(new person());
		test(new student());
	}
}

执行结果如下:

hello word !
student !

你可能感兴趣的:(Java学习日记)