黑马程序员_06_面向对象_成员变量_匿名对象_封装_构造函数_thisPrivate

 
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
 



0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-

一、面向对象
1、面向对象是相对于面向过程而言的。
2、面向对象和面向过程都是一种思想。
3、面向过程强调的就是功能行为。
4、面向对象:将功能封装进对象,强调的是具备了功能的对象。
5、面向对象是基于面向过程的。

0504-0504-0504-0504-0504-0504-0504-0504-
成员变量和局部变量的区别:
1、作用范围不同:
	【成员变量】作用于整个类。
	【局部变量】作用于方法内,或者语句内。
2、在内存中的位置不同:
	【成员变量】在堆内存中,因为对象的存在,才在内存中存在。
	【局部变量】在栈内存中。
3、初始化值
	【成员变量】可以只声明,不赋值。系统会给它一个默认的初始值。
	【局部变量】声明后、使用前必须得赋值!

0505-0505-0505-0505-0505-0505-0505-0505-
一、匿名对象
1、匿名对象是对象的简化形式。
2、匿名对象的两种使用方式:
	(1)、当对对象的方法仅进行一次调用的时候。
	(2)、匿名对象可以作为实际参数进行传递。
二、
	1、每次new匿名对象都会产生一个新的对象,然后在调用它的方法或者属性,
			调用属性执行完后,内存中产生垃圾,因此,匿名对象多调用方法。
	2、当对一个对象的方法只调用一次时,可以使用匿名对象,这样写比较简单。
		 但是对一个对象调用多个成员(变量和方法)时,必须得给对象起个名字。

0506-0506-0506-0506-0506-0506-0506-0506-

一、封装:
	1、是什么?
			是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
	2、有什么好处?
			将变化隔离、便于使用、提高重用性、提高安全性。
	3、封装原则:
			将不需要对外提供的内容都隐藏起来。
			把属性都隐藏,提供公共方法对其访问。
	4、常见的封装体:
			方法、类、包、框架

0507-0507-0507-0507-0507-0507-0507-0507-

1、之所以对属性私有化,是为了防止直接方法属性。
2、为了让他人可以访问属性,程序得提供访问方法:setAge() getAge()
3、之所以对外提供访问方法,就因为可以在访问方法中加入逻辑判断语句,
对方问的数据进行操作,提高代码的健壮性。
  
class Person{

		private age;
		public void setAge(int age){
				if(age>0 && age<130){
						this.age=age;
						speak();
				}else{
						System.out.println("非法的age");
				}
	  }
	  
	  public int getAge(){
	  		return this.age;
	  }
	  
	  public void speak(){
	  		System.out.println("age="+age);
	  }
}

0508-0508-0508-0508-0508-0508-0508-0508-

一、构造函数
1、特点:
	(1)、函数名与类名相同
	(2)、不用定义返回值类型
	(3)、不可以写return语句
2、作用:给对象初始化(对象一旦建立,就会调用与之对应的构造函数)。
3、注意:
	(1)、默认构造函数的特点。
	(2)、多个构造函数是以重载的方式存在的。
	(3)、当一个类中没有定义构造方法时,系统会默认地给该类加入一个public空参的构造方法。
             如:public Person(){}
  (4)、当在类中自定义了构造函数后,默认的构造函数就没有了。
4、构造方法和一般方法的区别
  (1)、在写法上不同。
  (2)、在运行上也不同:
  					构造方法是在对象一建立就运行,给对象初始化。
  					一般方法对象调用才执行,是给对象添加对象具备的功能。
	(3)、一个对象建立,构造方法只运行一次,而一般方法可以被该对象调用多次。
	
public class PersonDemo0508{
		public static void main(String[] args){
			  Person p1=new Person();
			  Person p2=new Person(5);
			  Person p3=new Person(5,"李四");
		}	
}

class Person{
		private int age;
		private String name;
		
		public void setAge(){
				this.age=age;	
		}	
		public int getAge(){
				return age;	
		}
		
		Person(){
				System.out.println("A:name: "+name+" ,age: "+age);	
		}
		
		Person(int age){
				this.age=age;	
				System.out.println("B:name: "+name+" ,age: "+age);	
		}
		
		Person(int age,String name){
				this.age=age;
				this.name=name;	
				System.out.println("C:name: "+name+" ,age: "+age);	
		}
}	
	
	

0509-0509-0509-0509-0509-0509-0509-0509-

构造代码块:
		1、作用:给对象进行初始化。
		2、对象一建立就运行,而且优于构造函数执行。
		3、和构造函数的区别:
				构造代码块是给所有的对象进行统一初始化
				构造函数是给对应的对象初始化
public class PersonDemo0508{
		public static void main(String[] args){
			  Person p1=new Person();
			  Person p2=new Person(5);
			  Person p3=new Person(5,"李四");
		}	
}

class Person{
		private int age;
		private String name;
		
		public void setAge(){
				this.age=age;	
		}	
		public int getAge(){
				return age;	
		}
		
		/*
		构造代码块:
		1、作用:给对象进行初始化。
		2、对象一建立就运行,而且优于构造函数执行。
		3、和构造函数的区别:
				构造代码块是给所有的对象进行统一初始化
				构造函数是给对应的对象初始化
		4、构造代码块中定义的是不同对象共性的初始化内容
		*/		
				
		{
				System.out.pritln("cry.............");
		}
		
		Person(){
				System.out.println("A:name: "+name+" ,age: "+age);	
		}
		
		Person(int age){
				this.age=age;	
				System.out.println("B:name: "+name+" ,age: "+age);	
		}
		
		Person(int age,String name){
				this.age=age;
				this.name=name;	
				System.out.println("C:name: "+name+" ,age: "+age);	
		}
}

0510-0510-0510-0510-0510-0510-0510-0510-
1、private 可以修饰构造函数,当所有的构造函数被私有化后,该类就不能创建对象了,
最常见的应用就是【单例模式】

2、this作用:
		(1)、区分局部变量和成员变量相同的情况。
		(2)、调用成员属性和成员方法
3、this所代表的是本类的对象,一个类可以有多个对象,到底代表哪一个呢?
		this代表的就是它所在函数所属对象的引用。

0512-0512-0512-0512-0512-0512-0512-0512-

1、构造函数之间相互调用只能使用this关键字
2、this语句只能放在构造函数的第一行,因为初始化要先执行

public class PersonDemo0508{
		public static void main(String[] args){
			  Person p1=new Person();
			  Person p2=new Person(5);
			  Person p3=new Person(5,"李四");
		}	
}

class Person{
		private int age;
		private String name;
		
		public void setAge(){
				this.age=age;	
		}	
		public int getAge(){
				return age;	
		}
		
		Person(){
				System.out.println("A:name: "+name+" ,age: "+age);	
		}
		
		Person(int age){
				this.age=age;	
				System.out.println("B:name: "+name+" ,age: "+age);	
		}
		
		Person(int age,String name){
		    //构造函数之间相互调用只能使用this关键字
		    //this.age=age;
				this(age);
				this.name=name;	
				System.out.println("C:name: "+name+" ,age: "+age);	
		}
}





---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值