01-面向对象的理解

面向对象的理解

1、什么是类?

类是对具有相同属性(特征)和行为(方法)的一系列个体的集合,类似一个抽象的概念,现实中是不存在的。

/*
 * 
 *    定义现实世界中的学生类型
 *    Student是一个类,一种引用类型
 *    概念上是一个定义,现实世界中不存在
 */
package a定义一个类;

public class Student {
	
	//属性:
	//学号
	int id;//成员变量,实例变量
			//id是对象级别的,必须先有对象才能访问,不能使用类直接访问
	//姓名
	String name;
	//性别
	boolean sex;
	//年龄
	int age;
	//住址
	String addr;
	
	
	//方法:
	

}

2、什么是对象?

从一个类中拿到具有具体属性和行为的个体,被称之为对象,现实中山存在的。另一种意思,对象是由一组数据结构和处理他们的方法组成的,其中重点"数据"包括对象的特性、状态等静态信息;"方法"就是行为,包括该对象对数据的操作和功能等信息。

3、面向对象编程的理解

类是抽象的,对象是具体的。把具有相同行为和属性的对象归纳为类,将类进行具体属性和行为实现就是对象。例如:小品演员就是一个类,赵本山就是一个对象。

Java中面向对象(OOP:Object Oriented Programming):

​ 在面向对象的编程方式中,对象拥有多种特性,如手机有高度、宽度、厚度、颜色、重量等特性,这些特性被称为对象的属性。对象还有很多功能,如手机可以听音乐、打电话、发信息、看电影等工作功能,这些功能被称为对象的方法,实际上这些方法是一种函数。而对象又不是孤立的,是有父子关系的,如手机属于电子产品,电子产品属于物体等,这种父子关系称为对象的继承性。在编程中,把所有的问题看做对象,以人的思维方式解决。这种方式非常人性化,对象实际上就是一组数据的集合,并且数据都已经命名。这些数据根据就是对象的属性,可以被程序访问。对象还包括很多函数,这些函数被称为对象的方法,也可以被程序访问。不过在外部访问对象内的属性或方法,必须先引用对象,然后用点号访问对象的属性和方法

​ 自顶向下顺序执行,逐步求精;其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。程序流程在写程序时就已决定

4、对象的创建和使用

/*
 *     对象如何创建,又如何使用
 *     
 */
package b对象的建立和使用;

class Student {
	
	//属性:
	//学号
	int id;//成员变量,实例变量
			//id是对象级别的,必须先有对象才能访问,不能使用类直接访问
	//姓名
	String name;
	//性别
	boolean sex;
	//年龄
	int age;
	//住址
	String addr;
	
	
	//方法:
	

}

public class Test01 {
	
	public static void main(String[] args){
		
		//1.创建对象
		//stu1是一个局部变量,这个局部变量stu1是Student类型,也就是一个引用类型
		Student stu1 = new Student();//关键字new作用就是在JVM的堆(heap)内存中开辟一块Student类型的空间
		                           //其空间中有对象,而stu1存储的是对象的内存地址,stu1称:引用
									//通过“引用”间接访问堆中的对象
		//一个类可以创建多个变量
		//Student stu2 = new Student();
		
		//2.使用对象
		//访问成员变量(实例变量、非静态变量),必须使用"引用."
		
		//name是成员变量,对象相关,必须现有对象才能访问,须使用"引用."
		//ERROR :System.out.println(Student.name);
		
		//读取过程
		System.out.println("id="+stu1.id);//0
		System.out.println("name="+stu1.name);//null
		System.out.println("age="+stu1.age);//0
		System.out.println("sex="+(stu1.sex?"男":"女"));//false
		
		/*
		 * 关于系统默认值
		 *              基本数据类型
		 *              byte short int long   0
		 *              float double   0.0
		 *              boolean    false
		 *              char    \u0000
		 *              
		 *              引用数据类型   null
		 */
		//赋值过程
		
		stu1.id=5664;
		stu1.name="ksjdkjs";
		stu1.age=54516;//虽然程序编译通过,但不符合现实的业务逻辑
		stu1.sex=true;
		
		//读取过程
				System.out.println("id="+stu1.id);//5664
				System.out.println("name="+stu1.name);//ksjdkjs
				System.out.println("age="+stu1.age);//54516
				System.out.println("sex="+(stu1.sex?"男":"女"));//true
				
				
		
	}

}

上一篇:c# – IComparable作为逆变的好处?


下一篇:61.toString()