黑马程序员技术交流社区
标题:
学习经历
[打印本页]
作者:
light23
时间:
2019-4-17 18:01
标题:
学习经历
1.面向过程和面向对象(了解)
面向过程是什么?
比如说,我们想要完成某一个大型的项目,但是呢,想要完成这个大项目得需要三个功能块(三个方法)组合在一起共同完成这个项目。
我们要做的事情,首先,就是我们要专心的把每一个功能做好,然后组合在一起才能够完成这个大项目。那里面我们重点关注的就是方法,
认真的完成每一步才可以。这就是面向过程的思想,面向函数。
面向对象是什么?
比如说,我们想要完成某一个大型的项目,但是呢,想要完成这个大项目得需要三个功能块(三个方法)组合在一起共同完成这个项目。
但是,我们换了一种思想,我们不自己去做每一个方法,我们找了一个对象,这个对象它具备三个功能,也就意味着这一个对象就能够
帮助我们完成这个项目,在这里,我们重点关注的就是这个对象,这就是面向对象的思想
面向对象和面向过程的关系?
面向对象基于面向过程,是建立在面向过程基础之上
面向对象的好处是什么?
它是一种更符合我们人类思考习惯的思想
它可以将复杂的事情简单化
它可以将我们程序员从执行者变成了指挥者
2.类和对象
什么是类?
官方:类是事物的属性和行为的集合,是一个抽象的概念
我们想要知道java中的类是什么,那我们就要先知道咱们现实生活中类是什么,因为java源于生活,那现实生活中的类是什么?
通过查看百度百科,我们知道了,类是许多相似或相同事物的综合,具有共同特征的事物所形成的种类。如果你还不理解,
那你可以问题自己一个问题,你为什么是人"类",因为我们具备相同或者相似的特性,比如说,我们都有两个耳朵,两个眼睛,都有头发,
都有嘴巴,我们都名字,年龄,性别,血型,星座等等,我们都有吃,喝,拉,撒,睡,dbj等功能。
什么是对象?
官方:对象是类的具体的存在,体现
如果那人类这个类为例的话,那对象就是你,我,他,每一个人,每一个实例,个体
怎么写一个类?
定义类,要用关键字class
假设我们要描述"人类"
class Person {
//属性:事物的外在特征
String name;
int age;
String sex;
String xingzuo;
String xuexing;
//行为:事物的具备的功能
public void eat() {
System.out.println("吃");
}
public void drink() {
}
public void la() {}
public void sa() {}
public void sleep() {}
public void dbj() {}
}
我们要描述"猪类"
class Pig {
//属性
String name;
int age;
//行为
public void sleep() {}
public void eat() {}
public void gong() {}
}
怎么使用一个类?
我们想要使用一个类,就要创建该类的对象,我们要去使用这个对象
创建对象的格式?
类名 变量名(对象名) = new 类名();
Person person = new Person();
Pig pig = new Pig();
我们怎么使用对象里的属性(成员变量)呢?
类名.属性名
person.name = "张三";
person.age = 18;
person.sex = "男淫";
person.xingzuo = "处女座";
person.xuexing = "A型";
System.out.println(person.name);
怎么使用对象里的行为(成员方法)?
类名.方法名();
person.eat();
person.drink();
3.成员变量和局部变量
什么是成员变量?
定义在类中,方法外的变量就是成员变量
什么是局部变量?
定义在方法中,或者方法的声明上的变量就是局部变量
这哥俩的区别?
定义位置不同:
局部变量:定义在方法中,或者方法声明上
成员变量:定义在类中,方法外
内存存储位置不同:
局部变量:由于是在方法中,所以存储的位置和方法是一致的,也就是在栈内存中的方法中,所以它的声明周期随着方法的存在而存在,随着方法的消失而消失
成员变量:存储在堆内存中的对象中,所以它的声明周期是随着对象的存在而存在,随着对象的消失而消失
初始化值不同:
局部变量:没有默认初始化值,不赋值就使用会报错
成员变量:有默认的初始化值
4.封装
什么封装?
封装是隐藏对象的属性和实现细节,仅对外提供公共的访问方式
封装的好处是什么?
提高了安全性
如何隐藏对象的属性和实现细节呢?
只需要在属性的前面加上一个新学习的关键字private即可
如何对外提供公共的访问方式?
写两个方法,一个方法是专门给属性赋值的setXXX,一个方法是专门获取属性值的getXXX
5.private关键字
什么是private关键字?
private关键字是一个修饰符,它代表私有的意思,可以修饰成员变量(属性)和成员方法(行为)
private关键字的特点?
被private关键字所修饰的成员变量和成员方法只能在被类中访问,不能在其他类中访问
注:private仅仅是封装的一种体现,方法也算是一种封装
6.this关键字
什么是this关键字?
this关键字代表对象的引用,代表哪一个对象的引用呢?哪一个对象调用this所在的方法,this就代表哪个对象
this的作用是什么?
解决了同名的局部变量隐藏了成员变量的问题
7.构造方法
什么是构造方法?
方法的名字和类名是一样的,方法的格式和普通方法的格式不一样的特殊的方法 就是构造方法
构造方法的作用?
用来创建对象的
给对象的属性进行初始化的
构造方法的格式?
修饰符 类名() {
XXXOOO;
return;
}
我们在使用构造方法的时候需要注意哪些问题?
如果我们没有手动去写构造方法的话,系统会自动给我们带一个无参数的构造方法
如果我们手动写构造方法的话,系统默认带的无参数的构造方法就没有了
既然构造方法也是方法,所以它也遵循方法的重载规则
public Person() {}
public Person(String name) {}
public Person(int age) {}
public Person(String name, int age) {}
这些都可以构成方法的重载
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2