JAVA 学习第五天

面向对象

  面向对象是一种思想

  面向对象是相对面向过程而言

  面向过程:强调的是功能行为

  面向对象:将功能封装进对象,强调具备了功能的对象


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

开发就是找对象,使用对象


类和对象的关系

  类就是对现实生活中事物的描述

  对象就是这类事物,实实在在存在的个体


局部变量:栈内存中

成员变量:堆内存中


匿名对象

<span style="color:#CC33CC;"><strong><span style="font-size:18px;">new Car().num = 5;
new Car().color = "blue";
new Car().num;</span></strong></span>

使用方式一:

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

  如果对一个对象进行多个成员调用,必须给这个对象起个名字

方式二:

  可以将匿名对象作为实际参数进行传递

<span style="color:#CC33CC;"><strong><span style="font-size:18px;">eg: show(new Car());</span></strong></span>

封装

  好处:将变化隔离,便于使用,提高重用性,提高安全性

  原则:1,将了需要对外提供的内容都隐藏起来

              2,把属性都隐藏,提供公共方法对其访问


构造函数

  特点:1,函数与类名相同

              2,不用定义返回值类型

              3,不可以写return语句

  作用:缎带对象进行初始化

***当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数

     当类中定义了构造函数时,系统中就没有默认函数了


构造函数和一般函数在写法上有不同

在运行上也有不同

  构造函数在对象一建立就运行,给对象初始化

  而一般方法是对象调用才执行,是给对象添加对象具备的功能


  一个对象建立,构造函数只运行一次

  一般方法可以被对象调用多次


  构造代码块:给所有对象进行初始化

  构造函数只给对应对象进行初始化


以下是一份综合代码,详细看看注释


<span style="color:#CC33CC;"><strong><span style="font-size:18px;">public class Person {
	private int age;
	private String name;
	
	/*
	 * 构造代码块
	 * 作用:给对象初始化
	 * 对象一建立就运行,优先于构造函数执行
	 */
	{
		cry();
	}
	//构造Person
	Person() {}
	//简单说:哪个对象在调用this所在的函数,this就代表哪个对象
	Person(String name) { 
		this.name = name;//不可用this(name)
	}
	Person(int age) { this.age = age; }
	Person(String name, int age) { 
		//this.name = name;
		this(name);
		this.age = age; 
		/*
		 * this.age = age;
		 * this(name);
		 * 这样是不可以的,this在构造函数中必须是第一行
		 * 因为初始化要先执行
		 * 还有构造函数之间不许相互调用,会进入死循环
		 */
	}
	Person(int age, String name) { this.name = name; this.age = age; }
	
	//this的应用
	//两个人比较是不是同龄人
	//this的应用:当定义类中的功能时,该函数内部要用到该函数的对象时,用this来表示这个对象
	public boolean compare(Person p)
	{
		return this.age == p.age;
	}
	
	
	public void setAge(int num) { age = num; }
	public int getAge() { return age; }
	
	public void setName(String s) { name = s; }
	public String getName() { return name; }
	
	void cry()  { System.out.println("cry...."); }
	
	void speak()
	{
		System.out.println("age="+age);
		System.out.println("name="+name);
	}
}
</span></strong></span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值