【黑马程序员】面向对象(一) 第五天

-------  android培训java培训java学习型技术博客、期待与您交流! ----------

知识点

面向对象是一种对现实世界理解和抽象的方法
通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于人理解的方式对于复杂系统的进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。
面向对象能让复杂的变成简单的,能让执行者变成指挥者

01)面向对象(概述)

三个特征: 封装 多态


02)举例

一切皆对象,万物皆对象。
例:某某人的车坏了,就去找个会修车的人修车,而会修车的这个人就具备了修车的这个功能,而某某就是在使用这个对象。

03)类和对象的关系

对象是类的实例。可以使用new操作符创建对象,使用 运算符(.)通过对象的引用变量来访问该对象的成员。
类:就是对现实生活中事物的描述。
对象:就是这类事物,实实在在的个体。


public class CarDemo {
	public static void main(String[] args) {
		Car c = new Car();//c就是一个类类型变量
		c.time = "改变前";
		c.run();//改变前。
		c.color = "蓝色";//将已有车的颜色改成蓝色
		c.num = 100;//修改车的轮胎数。
		c.time = "改变后";
		c.run();//改变后。
	}
}
class Car{
	String color = "红色";//描述颜色。
	int num = 4;//描述轮胎数。
	String time =null;
	void run(){//运行行为
		System.out.println(time + " 这辆车的颜色是" + color + "的, 有" + num + "个轮胎。");
	}
}

运行结果如下图所示:


04)成员变量和局部变量

作用范围:成员变量作用于整个类中。 局部变量作用于函数中,或语句中。
在内存中的位置:成员变量,在内存中,因为对象的存在,才在内存中存在。   局部变量,存在内存中。

05)匿名对象的应用

匿名对象使用对象一:当对对象的方法只调用一次时可以用匿名对象来完成,这样写比较简化。如果对一个对象的多个成员进行调用时,必须给这个对象起个名字。
匿名对象使用对象二:可以将匿名对象作为实际参数进行传递。
new Car();//创建匿名对象,运行后在内存中边垃圾,被释放。
new Car().num = 10;//创建匿名对象,并num的值为10。运行后同上。

06)封装


封装:在使用对象时,没有必要知道对象在内部是如何完成功能操作的,只要指挥对象去做,知道结果就可以了。
举例:比如我找比老师买电脑,我就在使用毕老师这个对象。至于比老师如何和销售商砍价,如何与销售商说需求硬件信息,这些细节(被比老师封装,隐藏的)对于我来说都是没必要了解。我只需要付钱,拿到货后就能使用电脑了。
函数本身就是一个最小的封装体。

06)如何进行封装

private:私有,权限修饰符。用于修饰类中的成员(成员变量,成员函数)。
私有只在本类中有效,私有只是封装的一种体现形式
public class CatEat {
	public static void main(String[] args) {
		Cat c = new Cat();
		c.setName("汤姆");//修改name的值为“汤姆”。
		c.setEat("地球");//修改eat的值为“地球”。
		c.eat();
	}
}
class Cat{
	private String name;//被封装,只能在Cat类中使用。
	private String eat;//同上。
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public String getEat(){
		return eat;
	}
	public void setEat(String eat){
		this.eat = eat;
	}
	void eat(){
		System.out.println(name + "正在啃" + eat + "!");
	}
}
运行结果如下图所示:


08)构造函数。



public class CatDemo_3 {
	public static void main(String[] args) {
		Cat_1 c1 = new Cat_1();//调用无参构造。
		Cat_1 c2 = new Cat_1("汤姆");
		Cat_1 c3 = new Cat_1("汤姆", "地球");
	}
}
class Cat_1{
	private String name;//初始值为null。
	private String eat;//初始值为null。
	Cat_1(){
		System.out.print("A: " + name + "在吃" + eat);
		eat();
	}
	Cat_1(String name){
		this.name = name;
		System.out.print("B: " + name + "在吃" + eat);
		eat();
	}
	Cat_1(String name, String eat){
		this.eat = eat;
		this.name = name;
		System.out.print("C: " + name + "在吃" + eat);
		eat();
	}
	private void eat(){
		System.out.print("\t" + name + "说" + eat);
		System.out.println("真好吃!");
	}
}
运行结果如下图所示:


09)**构造代码块。


public class CatDemo_4 {
	public static void main(String[] args) {
		Cat_2 c1 = new Cat_2();//调用无参构造。首先运行eat()函数;
		Cat_2 c2 = new Cat_2("汤姆");
		Cat_2 c3 = new Cat_2("汤姆", "地球");
	}
}
class Cat_2{
	private String name;//初始值为null。
	private String eat;//初始值为null。
	{
		eat();//构造代码块,只要创建了对象,都是第一个执行。
	}
	Cat_2(){
		System.out.println("A: " + name + "在吃" + eat);
	}
	Cat_2(String name){
		this.name = name;
		System.out.println("B: " + name + "在吃" + eat);
	}
	Cat_2(String name, String eat){
		this.eat = eat;
		this.name = name;
		System.out.println("C: " + name + "在吃" + eat);
	}
	void eat(){
		System.out.println("我总是第一个执行的!");
	}
}
运行结果如下图所示:


10)this关键字

this是指向调用对象本身的引用
this给出一种指代对象的方法,这样,可以在实例方法代码中调用实例方法。
this的另一个常用方法是让构造方法调用同一个类的另一个构造方法。


11)this关键字的应用



附言:我是Java新人,如有错误的地方请指出。
每天学习一点点,纠错一点点,进步很大点。



-------  android培训java培训java学习型技术博客、期待与您交流! ----------



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值