黑马程序员——函数与面向对象

                                                                                    ---------------------- android培训、java培训、期待与您交流! ---------------------- 



一丶函数

   1、函数是定义在类中的具有特定功能的一段独立小程序。也称之为方法。


   2、函数的调用,以上的程序都可以用这个方法解决!


   3、函数的重载
         ①在同一个类中,允许有一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
         ②当定义的功能相同,但参与运算的未知内容不同,那么,就定义一个函数名称表示功能,方便阅读,通过参数列表的不同区分多个同名函数。


   4、构造函数示例:

         ①特点:函数名和类名相同,没有返回值类型,不可以写return语句。

         ②作用:给对象进行初始化

         ③多个构造函数是以重载的形式存在的

class Person
	{
		/*
		构造函数小细节:如果在一个类中没有定义构造函数,那么系统会默认给该类加入一个空参数的构造函数。例如:Person(){},方便初始化,否则无法创建对象
		当类中自定义了构造函数,那么默认的构造函数就会不存在了
		*/
		/*Person()
		{
			System.out.println("person run");
		}
		*/
		private String name;
		public  void setName(String name)
		{
			this.name=name;
		}
		public String gerName()
		{
			return name;
		}
		private int age;
		/*
		构造代码块
		作用:初始化对象
		创建对象的同时,就开始运行,而且优先于构造函数执行
		与构造函数的区别:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
		构造代码块中定义的事不同对象共性的初始化内容
		*/
		{
			//System.out.println("person code run");
			cry();
		}
		
		Person()
		{
			System.out.println("A:name="+name+",,"+"age="+age);
			//System.out.println("cry");
			//cry();
		}
		
		Person(Sring n)
		{
			name=n;
			System.out.println("B:name="+name+",,"+"age="+age);
			//System.out.println("cry");
			//cry();
		}
		
		Person(Sring n,int a)
		{
			//name=n;
			this(n);//构造函数之间的调用用词方法
			age=a;
			System.out.println("C:name="+name+",,"+"age="+age);
			//System.out.println("cry");
			//cry();
		}
		
		public void cry()
		{
			System.out.println("cry");
		}
		/*
		构造函数在对象创建的同时,就开始运行,初始化对象,一个对象建立,构造方法只运行一次
		一般函数是对象调用才执行,给对象向添加对象具备的功能,可以被该对象调用多次
		*/
	}
	
	class PersonDemo_2
	{
		public static void main(String[] args)
		{
			//Person p=new Person();
			/*
			我们发现"new Person()"的后半部分和"Person"类中的"Person()"方法相同,检测程序可以运行,说明,对象创建时就会调用"Person"类中与之对应的的构造方法
			从这一点可以看出来构造函数的作用是:给对象进行初始化
			*/
			Person p1=new Person();//初始化只哭一次
			//p1.cry();//哭第二次,一次类推
			
			//Person p2=new Person("李四");
			//p2.setName("李二");
			//System.out.println(p2.getName());
			
			//Person p3=new Person("张三",10);
		}
	}


二丶面向对象

   1、面向过程,强调的是功能行为。


   2、将功能封装进对象,强调具备了功能的对象


   3、面向对象是基于面向过程的。


   4、三个特征:封装,继承,多态。


   5、开发:找对象使用,没有对象,就创建一个对象。----找对象,建立对象,适用对象,维护对象的关系。


   6、对象就是功能的封装。也能封装其他的元素。


   7、类和对象的关系:类:java用类对现实生活中事物的描述(就像人用汉语描述生活);对象:就是这类事物,实实在在存在的个体。


   9、成员变量和局部变量。成员变量作用于整个类中,存在于堆内存;局部便令作用于方法或者语句中,存在以栈内存。成员变量          是随对象出现的,如果不出现对象(不new对象),则在堆内存 是不存在成员变量的


 10、匿名对象:
        ①当对对象方法仅进行一次调用;
        ②匿名对象可以作为实际参数进行传递
        例如:Car c=new Car();c.num=5;两句话可以简写成:new Car().num=5;(这就是匿名对象)


三丶面向对象的封装

   1、封装是指隐藏对象的属性和实现细节,只对外提供公共访问方式。


   2、代码示例:

/*
	私有只是封装的一种表现形式;封装不是私有
	之所以对外提供访问方式,是因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码健壮性。
	*/
	class Person
	{
		//Private:权限修饰符,修饰类中的成员(成员变量,成员函数);私有只在本类中有效
		private int age
		//age私有化以后,类以外即使建立对象也不能直接访问,但是人应该有年龄,就需要在Person类中提供访问age的方法
		//方法
		public void setAge(int age)//设置年龄
		{
			if(this.age>0&&this.age<130)
			{	
				this.age=age;
				speak();
			}
			else
				System.out.println("非法年龄");
		}
		pulic int getAge()//获取年龄
		{
			return age;
		}
		/*
		一个成员变量通常对应两种访问方式:设置和获取
		*/
		void speak()
		{
			System.out.println("age="+age);
		}
	}
	
	class PersomDemo
	{
		public static void main(String[] args)
		{
			Person p=new Person();
			
			//p.age=20;
			/*
			也可以赋值"-20";但是和现实不符合,造成这样的原因是因为age可以直接被访问到,那么解决这个问题,我们可以隐藏掉age,不让直接访问。用修饰符:private
			*/
			p.setAge(20);
			//p.speak();
		}
	}



                                                          ---------------------- android培训、java培训、期待与您交流! ---------------------- 


                                                                                        详细请查看:http://edu.csdn.net/heima

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值