黑马程序员技术交流社区
标题:
如何学习和理解面向对象
[打印本页]
作者:
sk120110
时间:
2014-7-4 12:55
标题:
如何学习和理解面向对象
如何学习和理解面向对象呢?面向对象不好学,那怎么才能正确学习面向对象呢?大家都是怎么学习的?
作者:
玉遥
时间:
2014-7-4 17:05
怎么着才能让我们更符合面向对象的思想?
a:找类
b:类有什么
c:类与类的关系
作者:
玉遥
时间:
2014-7-4 17:09
这是我学习面向对象第一天的总结,我又做了下解释希望会对你有所帮助
1:面向对象(理解)
(1)是相对应面向过程而言的,基于面向过程的一种编程思想。
(2)思想特点:
A:更符合我们思考习惯的思想。
B:把复杂的简单化。
C:把我们从执行者变成了指挥者。(角色转换)
(3)举例:
A:买电脑//自已买,得看品牌,找特点,跑路找门店,是面向过程,交给对象去办,就是面向对象
B:吃饭//自已买菜做饭乘饭,是面向过程,交给老婆去做饭端上来吃,是面向对象,老婆是对象
C:洗衣//自己脱了洗,搓,晾,是面向过程,交给老婆去做是面向对象
...
(4)把大象装进冰箱的案例分别使用面向过程和面向对象体现
A:面向过程//这一个类自己干了这些事情
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("关门");
}
}
B:面向对象
class 大象 {
public void in() {
System.out.println("进去");
}
}
class 冰箱 {
public void open() {
System.out.println("开门");
}
public void close() {
System.out.println("关门");
}
}
class 测试类 {//把测试类看成指挥者,通过另外两个类创建的对象去做事情就是面向对象
public static void main(String[] args) {
冰箱 b = new 冰箱();
大象 d = new 大象();
b.open();
d.in();
b.close();
}
}
2:类与对象的关系(理解)
(1)编程语言都是为了把现实世界的事物给描述出来的。
(2)现实世界的事物体现:
特征:外在的描述
行为:内在的行为
(3)Java语言的最基本单位:类
类和事物的转换:
事物:
特征:外在的描述
行为:内在的行为
类:
成员变量
成员方法
(4)类:是一组相关的属性和行为的抽象。
(5)对象:是该类事物的具体存在的个体。也叫做实例。
举例:
类:学生
对象:班长
3:如何写一个类和使用一个类的成员(掌握)
(1)先把要描述的事物通过特征和行为体现。
然后把该行为和特征体现为类的成员变量和成员方法。
(2)类:
成员变量:在类中方法外的变量。
成员方法:就是没有static的函数。
(3)案例:
学生类
手机类
(4)使用一个类:
A:在一个java文件中,可以写多个类。
但是,要求文件名和带main方法的那个类名相同。
B:如何使用:
创建对象:类名 变量名 = new 类名();
这个变量名其实就是一个对象。
使用成员:
成员变量:对象名.变量名;
成员方法:对象名.方法名();
(5)测试案例:
学生测试类
手机测试类
4:匿名对象(理解)
(1)没有名字的对象。
(2)应用场景:
A:(掌握) 调用方法只有一次的时候。
B:可以作为实际参数传递。
5:成员变量和局部变量的区别?(掌握)
(1)在类中的位置不同
成员变量:在类中,方法外。
局部变量:在方法内或者方法的形式参数。
(2)在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失。
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
(4)初始化值的不同
成员变量:有默认初始化值。
局部变量:没有默认初始化值。
6:一个变量到底该不该定义为成员变量。(掌握)
(1)如果变量和类有关系,就应该定义为成员变量。
(2)案例:
//变量和类没有关系
class Demo {
public int compare(int a,int b){
return a==b;
}
}
//变量和类有关系
class ChangFangXing {
int chang;
int kuan;
public int zhouChang() {
return 2*(chang+kuan);
}
public int area() {
return chang*kuan;
}
}
7:封装(理解)
(1)隐藏实现细节,提供公共的访问方式。
(2)封装的体现:
private修饰成员变量。
类或者方法本身也是封装。
(3)写代码的标准做法:(掌握)
成员变量用private修饰。
提供对应的getXxx()/setXxx()方法。
8:this关键字(掌握)
(1)代表当前类的引用对象。谁调用它代码代表谁。
(2)应用场景:
解决局部变量隐藏成员变量值的问题。
(3)标准代码:
class Student {
private String name;
private int 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;
}
}
//测试类
class StudentDemo {
public static void main(String[] args) {
Student s = new Student();
s.setName("林青霞");
s.setAge(27);
System.out.println(s.getName()+"---"+s.getAge());
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2