面向对象的学习路线(三大知识块)
1、属性、方法、构造器、代码块、内部类(加黑的是更重要一些的)
2、三大特征:封装性、继承性、多态性、(抽象性)
3、其他关键字:this /import /package /final /static /asbstract
何为“面向对象”的编程思想
举例子:把大象放入冰箱
面向过程:强调过程
先把冰箱打开,再把大象放进去,然后把冰箱门关上。
面向对象:强调具备这些功能的方法
人{
打开(冰箱){
冰箱.开(){}
}
抬起(大象){
大象.进入(冰箱);
}
关闭(冰箱){
冰箱.闭合()
}
}
冰箱{
开()
闭合()
}
大象{
进入()
}
先设计类(抽象的),再进行具体化、实例化,也叫做创建对象。例如上图中的人就是类,具体的比尔盖茨、马云就是对象(实实在在的具体的人)
二、一个简单的类的程序
public class PersonTest {
public static void main(String[] args) {
//创建person类(抽象的)的对象(具体的),也叫实例化。一个形象的例子就是(人这个概念下面有不同的个体
// 人——马云,马化腾***
Person p1 = new Person();
//调用属性
// p1.name = "miracle";
// p1.age = 23;
System.out.println(p1.name);
//调用方法
p1.create();
p1.speak("汉语"); //形参是调用的时候才传入(赋值)
}
}
// 类:抽下的
// 对象:具体的。也叫实例 创建对象=类的实例化
// 属性 = 成员变量 field
// 方法 = 类内的函数 method
class Person{
String name;
int age;
boolean isMale = true;
public void eat(){
System.out.println("人可以吃饭");
}
public void sleep(){
System.out.println("人可以睡觉");
}
public void create(){
System.out.println("中国人可以创造奇迹");
}
public void speak(String language){ //形参是调用的时候才传入(赋值)
System.out.println("可以说"+language);
}
}
就三个步骤:
1、创建类
2、创建对象(类的实例化)
3、调用对象:对象.方法 对象.属性
*属性=成员变量=field=域=字段
*方法=成员方法=函数=method
*创建类的对象=实例化类=类的实例化
内存解析
内存解析举例子:
实例化一个Person miracle = new Person();
现在有一个对象了,叫miracle,其属性有:
String name;
int age;
boolean isMale = true;
此时,有一个叫miracle的变量存储在Stack中,里面放的是地址,地址指向heap堆空间,这里存放了miracle的属性(name,age,isMale)
如果是对象数组(就是数组里每个元素都是引用数据类型)
那么就是现在stack里存放一个地址A,然后堆空间里还是一系列存放地址B,这些B地址分别指向的是对象。
return关键字的使用:
方法的返回值
void的方法也可以用return,但是只能像这样: return; 就是起到结束此方法(退出函数)的作用,和break一样的作用
形参的使用
方法声明的时候只写这里接收什么类型的形参,调用的时候才传入具体的形参。传入之后就直接在方法里可以对形参修改了(直接可以修改元素值了,如果想得到其他的信息、数据,那么方法需要设定一个返回值,或者方法外多定义一个变量当做形参传入到方法中)
p1.speak("汉语");
public void speak(String language){ //形参是调用的时候才传入(赋值)
System.out.println("可以说"+language);
}
形参可以传入现有的局部变量,在方法里可以直接就对这个变量进行改变,此时可以不用返回值了
类的方法可以调用属性——实例的方法可以调用实例的属性,并且修改。
记住:大处着眼,小处着手
要时不时看看自己正在学什么,学到哪了,大的概念要一直有,
小处就是细节之处要多实践动手。
“学而不思则罔,思而不学则殆”