黑马程序员——java-面向对象
来源:互联网 发布:网络摄像机怎么看回放 编辑:程序博客网 时间:2024/04/29 16:36
———–android培训、java培训、java学习型技术博客、期待与您交流!————
1:面向对象
(1)面向对象是相对应面向过程而言的一种编程思想,是基于面向过程的。(2)思想特点: A:是一种更符合我们思考习惯的思想。 B:把复杂的事情简单化。 C:让我们从执行着变成了指挥者。(3)案例: A:买电脑 B:吃饭,洗衣服 C:我要喝水(4)把大象装进冰箱,让大家对面向对象有一点点的了解。 面向过程: class Demo { public static void main(String[] args) { open(); in(); close(); } public static void open() { System.out.println("开门"); } public static void in() { System.out.println("我要进去"); } public static void close() { System.out.println("关门"); } } 面向对象: 如何让我们的代码更符合面向对象思想 A:有哪些类 B:类有哪些功能 C:类与类的关系 class 大象 { public void in() { System.out.println("我要进去"); } } class 冰箱 { public void open() { System.out.println("开门"); } public void close() { System.out.println("关门"); } } class Test { public static void main(String[] args) { 冰箱 b = new 冰箱(); 大象 d = new 大象(); b.open(); d.in(); b.close(); } }
2:
类与对象的关系
(1)现实世界的事物: 属性:事物的特征 行为:事物的功能(2)java中最基本的单位是类。所以,我们要把事物转换为对应的类。(3)如何转换呢: 类 事物 成员变量 属性 成员方法 行为 成员变量:属性,字段 成员方法:函数,方法(4)类与对象的概念 类:是一组相关的属性和行为的抽象的集合体。 对象:是该类事物的具体存在的个体。 类:学生 对象:林青霞
3:类与对象的使用
(1)学生类的制作和使用
(2)手机类的制作和使用
4:内存图
(1)一个对象的内存图: 一个对象的基本初始化过程。 ![这里写图片描述](http://img.blog.csdn.net/20150426083339221)(2)二个对象的内存图: 方法的共用。 ![这里写图片描述](http://img.blog.csdn.net/20150426083247438)(3)三个对象的内存图:
5:成员变量和局部变量的区别?
(1)在类中的位置不同: 成员变量:类中方法外。 局部变量:方法中或者方法声明上。(2)在内存中的位置不同: 成员变量:堆中。 局部变量:栈中。(3)生命周期不同: 成员变量:随着对象的存在而存在,随着对象的消失而消失。 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。(4)初始化值不同; 成员变量:有默认初始化值。 局部变量:没有默认初始化值。问题: 成员变量和名称可以不可和局部变量一样呢? 可以。 class Demo { int x = 10; public void show() { int x = 20; System.out.println(x); } public void method() { System.out.println(x); } }
6
变量什么时候该定义成员变量
(1)如果变量和类之间存在这描述性的关系,就该定义为成员变量。(2)注意: 变量的定义范围越小越好。
7
引用类型作为形式参数和返回值
(1)顾客点菜案例。 顾客--服务员--厨师(2)引用类型作为参数和返回值的问题: A:如果一个方法的形式参数是一个类名,那么,这里肯定需要的是该类的对象。 B:如果一个方法的返回值是一个类名,那么,这里返回的肯定是该类的对象。 class Demo { public void printStudent(Student s) { s.show(); } public Student getStudent() { Student s = new Student(); return s; } }
8
匿名对象
(1)就是没有名字的对象。(2)应用场景: A:调用方法。但是仅仅只调用一次的时候使用。 B:作为实际参数传递。 Demo d = new Demo(); d.printStudent(new Student());
9
封装
(1)隐藏实现细节,提供公共的访问方式。(2)体现有哪些呢? A:类 B:方法体 C:private修饰成员变量(3)private关键字: 是私有的意思。可以修饰类中的成员变量和成员方法。 注意:被它修饰的成员只能在本类中被访问。(4)标准代码: class Student { private String name; private int age; public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } }
10
构造方法
(1)创建对象,并对对象的内容进行初始化。(2)特点: A:方法名和类名相同。 B:没有返回值类型。 C:没有返回值。(3)注意事项: A:如果我们没给构造方法,系统给出一个默认构造。无参构造。 B:如果我们给出了构造方法,系统将不再提供构造方法。 这个时候,要么我们不使用无参构造方法。 要么,自己定义一个,然后使用。 推荐:自己给出无参构造方法。(4)给成员变量赋值的方式: A:无参+setXxx() B:带参(5)获取值: getXxx()(6)标准代码: class Student { private String name; private int age; public Student() {} public Student(String n,int a) { name = n; age = a; } public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } }
11
this关键字。
(1)代表当前类的一个对象。谁调用代表谁。(2)应用场景: A:使用本类的成员变量(掌握) this.变量名; B:使用本类其他构造方法 this(...) C:使用本类的其他成员方法 this.方法名();(3)标准代码: class Student { private String name; private int age; public Student() {} public Student(String name,int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } } 测试类: Student s = new Student(); s.setName("林青霞"); s.setAge(27); System.out.println(s.getName()+"---"+s.getAge()); Student ss = new Student("林青霞",27); System.out.println(ss.getName()+"---"+ss.getAge());(4)案例: A:手机标准代码案例及测试。 B:长方形标准代码案例及测试。
12
static关键字
(1)是静态的意思,可以修饰类中成员变量和成员方法。(2)静态的特点: A:随着类的加载而加载。 B:优先于对象存在。 C:被所有对象共享的数据。 这个也被我们作为为什么要使用静态的一个判断条件。 举例:饮水机和水杯。 D:让我们的调用多了一种方式: a:非静态的数据,必须创建对象访问。 b:静态的数据,可以通过对象访问,也可以通过类名访问。(3)静态的访问问题: A:非静态方法 非静态成员变量 静态成员变量 非静态成员方法 静态成员方法 B:静态方法 静态成员变量 静态成员方法 总之:静态只能访问静态。 称呼: 静态的成员被成为类成员。跟类相关。 非静态的成员被称为实例成员。跟对象相关。(4)main方法的解释以及如何接收键盘录入数据: public:权限最大 static:静态,不用创建对象。 void:返回没有意义。 main:大家都是这样做的。 String[] args:接收键盘录入数据。 接收键盘录入的格式: java HelloWorld hello world java java HelloWorld 10 20 30
13
代码块
(1)用{}括起来的代码。(2)分类: A:局部代码块。 方法内。 作用:限定变量的生命周期,提高效率。 B:构造代码块。 类中,方法外。 作用:把所有构造方法中相同的代码定义到一处。 C:静态代码块。 类中,方法外,加static。 作用:在整个系统运行过程中只执行一次的内容。(3)面试题: 构造方法,构造代码块,静态代码块的执行流程? 静态代码块 -- 构造代码块 -- 构造方法。 特点: 静态代码块只执行一次。 构造代码块每次调用构造方法都执行。
14
一个类的实例化过程
Person p = new Person();
A:把Person.class加载到内存。B:在栈内存为p变量开辟空间。C:在堆内存为Person对象开辟空间。D:对成员变量进行默认初始化。E:对成员变量进行显示初始化。F:如果有构造代码块,通过构造代码块对成员变量进行初始化。G:通过构造方法对成员变量进行初始化。I:对象初始化完毕,把堆内存的地址给p变量。
———–android培训、java培训、java学习型技术博客、期待与您交流!————
0 0
- 黑马程序员——java面向对象
- 黑马程序员——java:面向对象
- 黑马程序员——Java面向对象
- 黑马程序员——java-面向对象
- 黑马程序员——JAVA面向对象
- 黑马程序员——JAVA面向对象
- 黑马程序员——java面向对象
- 黑马程序员——Java面向对象
- 黑马程序员—java面向对象一
- 黑马程序员—java面向对象二
- 黑马程序员 java基础<—>--->面向对象
- 黑马程序员—JAVA面向对象
- 黑马程序员—Java面向对象
- 黑马程序员—Java之面向对象
- 黑马程序员—面向对象
- 黑马程序员—面向对象
- 黑马程序员—面向对象
- 黑马程序员--Java面向对象——(其他对象)
- Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
- HDU 1428 漫步校园 (BFS + 记忆化搜索)
- FIQ和IRQ
- 一切必须改变-我不能脱离实际
- 黑马程序员—java基础学习—删除一个带文件内容的目录
- 黑马程序员——java-面向对象
- picture(长方形)
- struts if 标签判断单个字母
- 解释型语言与编译型语言
- Java 8新特性探究(五)Base64详解
- Android开发--CardView使用
- unicode的CString转
- 【leetcode】Jump Game II
- WideCharToMultiByte和MultiByteToWideChar函数的用法