JAVA学习——DAY2(类、对象初步)

- 什么是面向过程?
面向过程也称结构化程序设计,其原则可以概括为:自顶向下、逐步求精、模块化;如图为面向过程的逻辑结构示意图:由主函数为入口,将其他函数串接到一起形成整个软件体系。面向过程设计的最小单位是函数,整个系统由一个个函数构成。
在这里插入图片描述
面向过程开发虽然能够保证开发质量和进度,但它有以下两个缺点:1.适应性很差,可扩展性不强,往往只适应于当前功能,如果需求发生改变,则都需要自顶向下的修改模块结构。

  • 什么是面向对象
    面向对象开发的基本思想是使用类,对象,继承,封装,消息;程序员从客观世界出发,将说要完成的对象进行抽象,取出公共部分组装成类,将对象状态看作成员变量,将他的行为看作成员方法;即面向对象的最小单位是类。

对象:现实世界的客观事物,举个例子说:人类是一个类,它包含人类的所有特征和行为;将它实例化成为对象,即小明,他是一个对象,他拥有人类这个类的部分特征和行为。

所以,面向对象编程其核心思想就是将所给对象抽象化形成一个类,当某个客观实体需要利用类的某个状态和方法时,将他实例化形成对象,利用类的成员变量和方法。

类:成员变量(状态数据)+成员方法(行为)=类(定义)

面向对象的基本特征:
1.封装(Encapsulation):即将类中的成员变量私有化(private)隐藏实现细节,向对象提供公共方法。
2.继承(Inheritance):一个类继承其他类拥有被继承类的属性和方法,前者为子类,后者为父类。
3.多态(Polymorphism):

面向对象的有点:
1.可扩展性强:类时客观事物的抽象总结,可以很方便的修改增加类的状态(成员变量)和行为(成员方法),而不必动其所有
2.待发现

- 面向过程与面向对象的实例体现区别:

任务:猪八戒吃包子

面向过程编程: 第一步——>设计函数 function 吃(人,食物);第二部——>main()函数调用:吃(猪八戒,包子);
面向对象编程:第一步——>抽象设计类 class 猪八戒{ public 食物,public 老婆……;public 吃(),public 娶();}
第二部——>实例化对象并引用对象方法: 猪八戒.吃(包子);

可以看出,面向对象扩展性更加强,并且更贴近人的思维

- 面向对象笔记
定义类:

[修饰符] class 类名
{
零到多个构造函数;
零到多个成员变量;
零到多个成员方法;
}

其中类的修饰符可以为:public,final,abstract
类名:必须每个单词首字母大写成驼峰式结构,单词之间不要有任何下划线,要求看类名便懂得类抽象的是什么
其中sattic修饰的成员不能访问没有static修饰的成员

类构造器:

[修饰符] 构造器名(形参1,形参2……)
{
	零到多个可执行语句
}

修饰符:public,protected,private
构造器名:必须与类名一致
形参:数据类型需要与调用构造器一致
调用:利用new关键字调用构造器
特点:无返回值,不能用void,不能用return语句,否则跟成员方法同处理
作用:类初始化

类成员变量:

[修饰符] 数据类型 变量名 [=初始值(默认是数据类型默认值)];

修饰符:public,protected,private,static,final,其中,public、protected、private三个只能出现一个,可以和static、final来组合使用
数据类型:int,short,long,byte,float,double,char,boolean
变量名:要求可读性强,由一到多个单词组成,每个单词首字母大写,单词与单词间不适用间隔符

类成员方法:

[修饰符] 方法方法值类型 方法名(形参列表)
{
	零到多个可执行语句组成的方法体;
}

修饰符:public,private,protected,static,final,abstract,其中public,private,protected只能出现一个,final和abstract最多只能出现一个,可以与static组合使用
方法名:要求可读性强,由一到多个单词组成,每个单词首字母大写,单词与单词间不适用间隔符

- 对象的产生与使用方法:
对象的创建的根本途径是利用构造器,如下定义一个person类

public class Person
{
	//定义两个成员变量
	public String name;
	public int age;
	//定义一个类构造器
	public Person(String name,int age){
		this.name=name;
		this.age=age;
		}
	//定义一个成员方法
	public void Play()
	{
		System.out.println(this.name+"今年"+this.age+"了");
	}
}

现在利用构造器创建一个对象

	Person XiaoAi =new Person("小艾",22);

现在利用已创建的对象使用对象的状态数据(成员变量)和对象play方法

	System.out.println("name:"+XiaoAi.name);
	XiaoAi.Play();

注意:
1.static修饰的成员只能调用static修饰的成员,不能调用非static成员
2.static修饰的方法和成员变量,既可以通过类来调用,即:类名.变量名;也可以通过实例后的对象来调用,即:对象 名.变量名;非static修饰的方法和变量只能由对象来调用;

  • 对象、引用、指针
    现在利用方框图展示JVM虚拟机内存大致介绍:
    在这里插入图片描述
    下图利用方框图展示对象被创建和对象引用对象方法时底层做了什么:
    在这里插入图片描述
    从图中可以看出,创建的对象只是获得了一个地址,引用对象的方法实际是引用地址进行操作;

  • this关键字
    两个作用:
    1.在构造器中引用,this指向构造器正在初始化的对象
    2.在方法中使用,this指向被调用方法的对象

public class Person
{
	//定义两个成员变量
	public String name;
	public int age;
	//定义一个类构造器
	public Person(String name,int age){
		//this指向构造器初始化的对象,即下面的XiaoAi
		//注意,这里this可以用于区别成员变量和局部变量
		this.name=name;
		this.age=age;
		}
	//定义一个成员方法
	public void Play()
	{
		System.out.println(this.name+"今年"+this.age+"了");
		//this指向被调用方法的对象,即:XiaoAi
		//注意,这里可以不用this,因为java默认给她this
		this.State();
	}
	public void State()
	{
		System.out.println("他老了");
	}
}

创建对象和引用

class PersonTest 
{
	public static void main(String[] args) 
	{
		//实例化,XiaoAi保存了Person的地址,并初始化了这个类
		Person XiaoAi=new Person("小艾",22);
		XiaoAi.Play();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值