【黑马程序员】面向对象(一) 第五天
来源:互联网 发布:电脑ps软件 编辑:程序博客网 时间:2024/04/28 16:50
------- 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学习型技术博客、期待与您交流! ----------
- 【黑马程序员】面向对象(一) 第五天
- 黑马程序员-第五天(面向对象)
- 黑马程序员 —— 面向对象(第五天)
- 黑马程序员java学习第五天,面向对象
- 黑马程序员--Java基础学习(面向对象)第五天
- 黑马程序员——java第五天:面向对象(类、对象、变量、封装、构造、this)
- 黑马程序员——第五天(Java面向对象基础)
- 黑马程序员_第五天 面向对象(二)_继承、多态、内部类
- 黑马程序员------毕老师视频笔记第五天------面向对象(封装)
- 黑马程序员------毕老师视频笔记第五天------面向对象(构造函数)
- 黑马程序员------毕老师视频笔记第五天------面向对象(this关键字)
- 黑马程序员——>第五天<面向对象(匿名对象-封装-构造代码块-this关键字)>
- 面向对象第五天
- 黑马程序员第五天
- 黑马程序员 面向对象(一)
- 黑马程序员_JAVA_面向对象(一)
- 黑马程序员 java面向对象(一)
- 黑马程序员-------面向对象基础(一)
- 项目总结(五):做拨号项目,暴露我的不足
- Singular和SciTE的结合
- jbpm4.4工作流引擎视频教程(02)
- 2009西电计算机研究生复试上机题
- 当了两天向导,带他进行了上海都市游543
- 【黑马程序员】面向对象(一) 第五天
- 朋友早早就拟好了路线700
- C++学习笔记5——语句
- [Leetcode] Remove Nth Node From End of List
- 二叉树inorder iterator的跌代器
- 给一个单向链表,随机选择一个node in one pass
- 关于运算符重载(总结)
- VS2010使用MFC类向导时提示“灾难性故障”的解决 .
- linux学习入门3——linux文件基本操作(linuxcast.net)(复制、移动、重命名、创建、删除文件及文件夹)