黑马程序员--- 学习笔记(第五天)

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

面向对象的概念:

讲功能封装对象,强调具备了功能的对象.
面向对象是一种思想,讲复杂问题简单化,是一个指挥者.
例子:
对于面试,我就对象,拥有编程的专业能力


人开门  名词提炼法封装对象
//人  门   两个对象

人{
   开门(门){
门.开();//人是指挥者,调用门打开自己的方法
   }
}


门{
   开(); //门拥有自己打开的方法
}
/*
模拟人开门
*/
class Demo1 
{
	public static void main(String[] args) 
	{
		//名词提炼法: 人  门
		/*
		人{
			开门(new门){
				门.开();//指挥门对象,调用它自己的开方法
			}
		}

		门{
			开(){
			
			}
		}
		
		 */
	}
}



//面向对象有三个特征: 封装, 继承, 多态


类和对象的关系
类:对现实生活中事物进行描述
对象:就是这类事物,实实在在存在的个体
简单说:类是对象的模板,对象是类的实例




现实生活中的对象: 张三,李四
想要描述 :提取对象中的共性内容,对具体的抽象
描述时:这些对象的共性有:姓名,年龄,性别,具备学习的功能


映射到java中,描述时就是class定义的类
具体对象就是java在堆内存中用new关键字建立的实体


汽车类
图纸(类=模板)
小车(对象=实例)
//类成员就是成员变量和成员函数


成员变量与局部变量的不同:
1.作用域:成员变量作用于类,局部变量作用于函数,或者语句中
2. 在内存中:成员变量在堆内存中,具有默认值,局部变量在栈内存中,只能初始化才可以使用


可以在本类中创建本类对象,和主函数

程序唯且只有一个主入口即可


匿名对象:
是对象的简写格式,例如:new car();


使用方式:
当对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化


用匿名对象作为参数传递.


封装:
隐藏对象的具体实现细节,对外提供公开的访问方式.

封装的好处:
1.讲变化隔离 
2.便于使用
3.提高重用性
4.提高安全性
封装的原则:
1.把不需要对外提供的内容都隐藏起来
2.把属性都隐藏,提供公共方法对其访问


private:私有的,权限修饰符,用于类中成员,代表成员本类中有效,需要对外提供访问方法


一个属性对象set get方法


注意:私有仅仅是封装的一种表现形式


之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句,
对语句的数据进行判断,提高代码的健壮性


构造函数:
对象一建立就会调用与之对应的构造函数


特点:
1.函数名与类名一样
2.不用定义返回值类型
3.不可以写return语句

作用:给对象进行初始化

构造函数的小细节:
当一个类中没有定义构造函数时,那系统会默认给该类加入一个无参构造函数


当类中有自定义构造函数,系统默认的构造函数就没有了.
调用空参数new 实体就会报错


一个类可以有多个构造函数,重载即可


构造函数和一般函数在写法,运行上也有不同
构造函数一建立就会运行,一般方法就是对象调用才会执行
一个对象建立构造函数只会执行一次,一般函数只要调用就可以执行


什么时候定义构造函数呢?
当分析事物时,该事物一存在就具备一些特性或者行为,那么
就将这些内容建立在构造函数中


构造代码块
作用:给对象初始化的

对象一建立就运行,且优先于构造函数执行
和构造函数的区别:
构造代码块给所有的对象进行统一初始化
而构造函数是给对应的对象初始化的


构造代码块中应写不同对象共性的初始化内容


this关键字


this代表它所在函数所在的引用,简单说:那个对象在调用this函数,this就
代表哪个对象

this关键字的基本应用:
1.当定义类中功能时,该函数内部需要用到此函数的对象时,这时用this
关键字表示这个对象
2.但凡本类功能内部使用了本类对象,都有this关键字表示
3.this关键字应用与构造函数之间互相调用
4.this用来解决成员变量和局部变量的命名冲突

/*
类 与 对象
*/
class Demo2 
{
	public static void main(String[] args) 
	{
		Car c=new Car();//实例化一个空白汽车对象
		c.show();
		Car c1=new Car("蓝色");//实例化一个带颜色的汽车对象
		c1.show();
		Car c2=new Car("红色",4);  //实例化一个带颜色,轮胎数的汽车对象
		 c2.show();
		boolean b=c2.compare(new Car("白色",4));//匿名对象传参   比较两车轮胎数是否相等
		System.out.println("比较结果:"+b);
	}
}
/*小车类*/
class Car
{
	/*构造代码块  随着对象一建立就运行*/
	{

		System.out.println("我们汽车都用会跑");
	}

	/*属性的private,对外提供公共的访问方式,加入逻辑判断语句,提高代码健壮性*/

	private String color;//小车颜色

	private int num;	 //小车轮胎数  

	/*空参数构造函数*/
	public Car(){
	
	}
	/*带颜色的构造函数*/
	public Car(String color){
		this.color=color; //解决成员变量与局部变量的命名冲突
	}
	/*带颜色,轮胎数的构造函数*/
	public Car(String color,int num){
		this(color); //this 实现构造函数互相调用
		this.num=num;
	}
	/*设置颜色  set */
	public void setColor(String color){
		this.color=color;//this关键字 代表调用这个本类对象,调用它的对象
	}
	/*获取颜色  get */
	public String getColor(){
		return color;
	}
	/*设置轮胎数 set  num必须>=4,否则默认num=4*/
	/*属性的private,对外提供公共的访问方式,加入逻辑判断语句,提高代码健壮性*/
	public void setNum(int num){
		if(num>=4)
			this.num=num;
		else 
			this.num=4;
	}
	/*获取轮胎数  get*/
	public int getNum(){
		return num;
	}
	/*比较轮胎数与别的汽车是否相同*/
	public boolean compare(Car c){
		return this.num==c.getNum();
	}
	/*汽车信息输出类*/
	public void show(){
		System.out.println("颜色:"+color+"轮胎数:"+num);
	}
}


注意: this只能放在构造函数第一行
     this不能出现在普通函数上
     
不能出现两个函数之间互相调用的情况



 —————————— ASP.Net+Android+IOS开发.Net培训、期待与您交流!——————————
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值