Java语言基础-面向对象-封装-构造方法-成员变量,局部变量

面向对象


什么是面向过程?:

面向过程的设计:
最小的程序单元是函数,每个函数负责完成某一个功能,用以接受输入数据,函数对输入数据进行处理,然后输出结果数据.
整个软件系统由一个个的函数组成,其中作为程序入口的函数称之为主函数,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现整个系统功能.
面向过程的设计,是采用指定而下的设计方式,在设计阶段就需要考虑每一个模块应该分解成哪些子模块,每一个子模块有细分为更小的子模块,如此类推,直到将模块细化为一个个函数.
存在的问题:

1.设计不够直观,与人类的习惯思维不一致.

2.系统软件适应性差,可拓展性差,维护性低.

面向过程最大的问题在于随着系统的膨胀,面向过程将无法应付,最终导致系统的崩溃。为了解决这一种软件危机,我们提出面向对象思想。

引出面向对象:

“面向对象”(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想。
面向对象程序设计(英语:Object-oriented programming,缩写:OOP),是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
面向对象时相对于面向过程而已的(c则是一个典型的面向过程的语言),站在面向对象的角度去看问题,你则是对象的动作的指挥者。如果站在面向过程的角度去看问题,你则是动作的执行者。
强调的是功能行为,面向过程”是一种以过程为中心的编程思想。“面向过程”他们不支持丰富的“面向对象”特性(比如继承、多态),就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程在这一系列工作的执行中,强调的是工作的执行。
面向对象:一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是具备某些功能的对象。
具备某种功能的实体,称为对象

面向对象的三大特征:

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

抽象


开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系.

例如:
吃饭

  	1:面向过程
  		1:自己动手做
  		2:买菜
  		3:洗菜
  		4:煮饭炒菜
  		5:很难吃,浪费时间
  	2:面向对象
  		1:找专业对象
  		2:餐馆.点餐
  		3:餐馆,做饭
  		4:饭好吃,节约时间,精力

局部变量和成员变量

成员变量:定义在类中的变量

局部变量 定义在方法中的变量

定义变量的语法:

数据类型 变量名 = 值;

变量的范围 :

成员变量:成员变量在整个类中都有效

局部变量:只在其中声明的方法内有效

变量的初始值 :

成员变量: 它存储在堆中,如果没有赋初值
它有默认值:整数byte、short、int、long =0;
char=’\uoooo’ (表示空)
boolean =flase;

局部变量: 没有初始值,所以必须先手动初始化才能使用.

变量的生命周期:

成员变量: 它属于对象,它随着对象的创建而创建,随着对象的消失而消失

局部变量: 使用完马上释放空间。

什么时候使用成员变量和局部变量?

1:考虑变量的生存时间,这会影响内存开销。

2:扩大变量作用域,不利于提高程序的高内聚。

开发中应该尽量缩小变量的作用范围,如此在内存中停留时间越短,性能也就更高。
不要动不动就使用static修饰,一般,定义工具方法的时候,static方法需要访问的变量,该变量属于类,此时才使用static修饰字段.
也不要动不动就使用成员变量,因为存在着线程不安全问题,能使用局部变量尽量使用局部变量.

什么是封装?

1.把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类);

2.“信息隐藏”, 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细
节,向外暴露方法,保证外界安全访问功能; 使用private私有化,不准外界访问,把方法使用public修饰,允许外界访问.

封装的好处

1:隐藏了类的具体实现,防止调用者随意修改系统属性

2:提高组件的重用性.

3:提高对象数据的安全性

访问权限控制修饰符:

private: 表示私有的, 表示类访问权限. 只能在本类中访问,离开本类之后,就不能直接访问.

不写(缺省):表示包私有,表示包访问权限. 访问者的包必须和当前定义类的包相同才能访问.

protected:表示子类访问权限,同包中的可以访问,即使不同包,但是有继承关系,也可以访问.

public:表示全局的,可以公共访问权限,如某个字段/方法,使用了public修饰,则可以在当前项目中任何地方访问.

protected:一般,在继承关系中,父类需要把一个方法只暴露给子类.

class PersonDemo
{
	public static void main(String[] args) 
	{
		Person p1 = new Person();
		p1.setAge(10);
		p1.name = "abc";
		System.out.println(p1.name);
		System.out.println(p1.getAge());//获取年龄
	}
}
class Person
{
	String name;
	private int age;  //私有化
	public void setAge(int a)  
	{
		if (a<0)
		{
			System.out.println("年龄不能为负数");
			return;
		}	
		age = a ;
	}
	public int getAge() //获取年龄的方法
	{
		return age;
	}
}

构造方法

构造方法的作用:

       1):创建对象,凡是必须和 new 一起使用.
       2):完成对象的初始化操作.

构造方法的特点:

      1):构造方法的名称和当前所在类的名称相同.
      2):禁止定义返回类型,
      3):在构造方法中,不需要使用return语句.其实构造方法是有返回值的,返回的是当前创建对象的引用.

构造方法注意的细节

1.当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。当类中如果自定义了构造函数,这时默认的构造函数就没有了。

2.在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。

public class  PersonDemo
{
	public static void main(String[] args) 
	{
		Person p = new Person("person"); 
		System.out.println(p.name);
	}
}
class Person  //创建人类
{
	String name = null;//人的名称
//自定义构造器
   	Person(){}//无参数的构造器
	Person(String n)//有参数的构造器
	{
		name = n;  //把n的值赋给name字段
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值