面向对象

类,面向对象

oo 面向对象
oop 面向对象编程
ooa 面向对象分析
ood 面向对象设计
理解面向对象过程和面向对象编程的区别

面向对象:
	围绕的是我这个软件是由哪些部分完成的,或者说是由哪些对象来做的
面向过程:
	 我要解决问题,我要做哪些事情,它的完成流程是怎样的,就问题解决问题
找对象:对象可以是问题域中出现的任何人,事物或者实体,
在找到问题域中的对象后,就要编写一个类来描述每个对象的“属性和行为”
属性是指对象身上有什么值 ;属性是类身上的值数据,其形式就是变量和常量属性
变量属性:声明语法采用的是变量的语法,只是比之前的普通变量访问修饰符
		在效果上,该类所有的对象都会自动具备属性,但是各个对象可以有各自不同的值
常量属性:声明语法采用的是常量的语法,也只是多了访问修饰符
		在效果上,该类所有的对象都会自动具备属性,只是值都一样,且不能更改
属性的变量和java基础学的变量有何区别?

public static void main(String[]args) {

//数据类型 =
Student stu =new Student();//产生对象的语法,使用new关键字,后面跟上 类名()
/*
 * 属性的默认初始值:基本数据类型为0,引用数据类型为null
 * Student stu---只会在内存一个4个字节的变量
 * 这个变量存放即将要指向真正的Student对象的引用
 * 所以又被称之为“对象名空间”
 * 
 * new Student()---这会产生一个新的Student对象
 *   该对象具备一个整体的空间存放各个属性
 *   此空间的大小由对象身上的属性 的大小总和决定---Student那么大
 *   类和对象的关系: 
 *     类是模板,不能直接使用,对象才是具体的实际存在的,所以对象又被称之为某个类的“实例”
 *     通过类产生对象的动作称之为“实例化”
 *     
 */
//操作对象 ......(属性和方法):对象加“.”操作符
/*
 * "."操作符在理解的商户把它理解为“的”字
 * Stu的name  ===>>stu.name
 * 
 */

定义类的的本质就是在定义一种数据类型
类可以是一种比基本数据类型复杂的多的数据类型,它有属性和行为组成
属性可以快多个,而且各有各的数据类型
行为是类自带的方法,可以是直接完成各种属于该类的对象的操作

“万物皆对象  对象因关注而产生”   ---- “类是对象的抽象,对象是类的实例”
类是具有相同属性和行为的一组对象的抽象

java中的类用关键字class声明,java源代码文件中只能包含一个公用(public)类,文件名必须与公用类名相同


对象的销毁:
	对象的销毁是由java中的垃圾回收机制完成的
	它由其自身的算法规则,程序员是没有办法通过代码控制,控制它什么时候回收,回收谁
	在垃圾回收的众多算法中有一条基本规则,它会主动回收没有引用指向的对象
所以
	1,如果想让某个对象在程序途中回收,那么我们可以主动的把它指向的引用赋值为null。(空指针异常,企图调用一个空对象的属性和方法)
	2,如果对象的引用变量时(对象名空间)是个局部变量,那么当它所属的模块执行结束,这个变量的生命周期就到头了,变量会消失,那么它所指向的对象也就没有引用指向了,也会被回收
	3,程序员在代码级别只有一句代码可以和垃圾回收之间交集,System.gc();
	注意:
	这句代码的作用是主动调用立即回收,但是立即收集器不想收,什么时候收,收哪些垃圾还是由它自己的算法决定。
如果一个对象只用一次,那么可以不给对象起变量名,new出来就直接用,用完过后没有引用,就会被回收

修饰符
访问修饰符一共有三个关键字,四种情况
现在我们只掌握两种:public (公共的),private(私有的)
public 修饰的属性或方法,可以在任意位置访问
private 修饰的属性或方法,可以在本类中访问
变量属性基于java的官方规范,应该定义为private,然后get/ste让外部操作取值/赋值
get方法被称为:访问器
ste方法被称为:修改器
两者在格式和命名上,都有标准规范

private String name;
	private int age;
	/*
	 * 当全局变量(属性)和局部变量重名的时候,会默认局部变量
	 * 在这种情况下,要特指全局变量(当前类的对象)需要在全局变量前面+“this."操作
	 * 此时的this相当于生活中每个对象说的“我”,指的是当前对象
	 * 好处:
	 * 在开发中,this.会有提示,可以提高开发效率
	 * ----建议:凡是访问本类中当前对象的属性和行为时,都养成this.的习惯
	 */

	public void xiouji(String name)
	{
		this.name=name;
	}

对象数组

	对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象必须分别进行实例化操作
	在声明对象数组后 ,必须对每个数组成员进行实例化话 才能直接使用,否则报空指针异常

 把5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。
     学生:Student
      成员变量:name,age
      构造方法:无参,带参
      
 分析:
      A:创建学生类。
      B:创建学生数组(对象数组)。
     C:创建5个学生对象,并赋值。
     D:把C步骤的元素,放到数组中。
     E:遍历学生数组。
public static void main(String[] args)
{
     // 创建学生数组(对象数组)。
     Student[] students = new Student[5];
     // for (int x = 0; x < students.length; x++) 
     // {
     //         System.out.println(students[x]);
     // }
     //     System.out.println("---------------------");

     // 创建5个学生对象,并赋值。
     Student s1 = new Student("小明", 27);
     Student s2 = new Student("小红", 30);
     Student s3 = new Student("小强", 30);
     Student s4 = new Student("旺财", 12);
     Student s5 = new Student("张三", 35);

     // 将对象放到数组中。
     students[0] = s1;
     students[1] = s2;
     students[2] = s3;
     students[3] = s4;
     students[4] = s5;

     // 遍历
     for (int x = 0; x < students.length; x++) 
     {
         //System.out.println(students[x]);
         Student s = students[x];
         System.out.println(s.getName()+"---"+s.getAge());
     }
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值