Java基础05:面向对象;类与对象;匿名对象;成员变量;局部变量;封装;构造函数

时间:2022-01-22 21:52:35
关键字:面向对象;类与对象;匿名对象;成员变量;局部变量;封装;构造函数

一、面向对象

        目前主流的编程思想有:面向过程和面向对象。

        面向过程的思想是将完成一件任务所需要的全部流程逐个列出,强调的是功能行为和过程;面向对象是利用“对象”这个东西来完成整个任务,就是将功能封装进对象,强调        的是具备了功能的对象。

        举一个现实中的例子。比如我有一部二手的“绿源”电动车,偶尔会问题,需要维修。第一个方法就是我自己找来一些工具,锤子、螺丝刀、万用电表之类,“自己动手、丰衣足食”,维修这部电动车。我也可以去修车店,找个修理工,利用他的各种维修功能来维修电动车,例如修理工.检查电路、修理工.补胎等。第一种方法的思路就是“面向过程”,第二种方法的思路就是“面向对象”。通过对比发现,面向对象更加简单易学。程序员从执行者变成了指挥者。

        原来的你不知道怎么修理电动车,你要自己学习,才能修好,有了面向对象思想呢,你就可以不用学习,直接调用别人的方法。你只要发出一条指令便可以。

        面向过程是面向对象的基础,在面向对象的方法中,依然有过程,但这些过程是通过对象自身具备的各种方法来完成的。我需要知道完成任务需要哪些对象,然后把这些对象组织起来,利用他们自身具备的各种方法完成任务即可。开发工作首先就是找到合适的对象,本质是找对象使用;没有对象就创建对象。大致的流程是:找对象——>建对象——>使用对象——>维护对象间的关系。

        万物皆对象。

        面向对象的3大特征:定义对象就要体现出这些特征。

        1.封装(多个功能)

        2.继承

        3.多态

二、名词提炼法
                人开门:
                人{
                        开门(门){
                                门.开门();
                        }
                }
                门{
                        开门(){
                                操作门轴。
                        }
                }
三、映射到java中,描述就是class定义的类
                (1)、具体对象就是java在对内存中使用new建立实体。
                (2)、类就是现实生活正事物的描述
                (3)、对象就是这类事物,实实在在的个体
                (4)、描述事物就是在描述事物的的属性和行为
                (5)、属性对应类中的变量,行为对应的类中的函数(方法)
                (6)、其实定义类,就是在描述食物,就是在定义属性和行为,属性和行为,属性和行为,共同成为类中的成员(成员变量,成员方法)
四、使用对象
                (1)、使用 new 操作符来建立对象
                (2)、对象.变量 对象.方法()        

  class Car{
private String color = "red";
private int num = 0;
public void run(){
System.out.pringln("color = "+color+" ; num = "+num);
}
}

class CarDemo{
public static void main(String[] args){
Car c = new Car();
c.color = "blue";
c.run();
}
}

五、成员变量,局部变量
                (1)、作用范围:成员变量作用于整个类中,局部变量作用于函数中,或者语句中
                (2)、在内存中的位置:成员变量在堆内存中,因为对象的存在,才在内存中存在。局部变量存在于栈内存中
六、匿名对象
                匿名对象是对象的简化形式,
                匿名对象两种使用情况
                        当对对象方法仅进行一次调用的时候
                        匿名对象可以作为实际参数进行传递

 class Car{
private num;
void run(){
System.out.print("run");
}
public static void show(Car c){
System.out.print("run");
}
public static void main(String[] args){
new Car().run; //使用匿名对象
show(new Car());
}

}
七、封装概述
                1、封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式
                2、好处
                        (1)、将变化隔离
                        (2)、便于使用
                        (3)、提高重用行
                        (4)、提高安全性
                3、封装原则
                        (1)、将不需要对外提供的内容都隐藏起来
                        (2)、把属性都隐藏,提供公共方法对其访问
八、private 封装 
                (1)、private 关键字
                        是一个权限修饰符
                        用于修饰成员(成员变量和成员函数)
                        被私有化的成员只在本类中有效
                (2)、常用之一
                        将成员变变量私有化,对外提供对应的set,get方法对其进行访问,提高对数据访问的安全性
                        之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句
                        对访问的数据进行操作,提高代码的健壮性
九、对象调用成员变量
                对象名.成员变量  
十、构造函数
                (1)、特点
                        1、函数名与类名相同
                        2、不用定义返回值类型
                        3、不可以写return 语句
                (2)作用:给对象进行初始化
                (3)、主意
                        1、默认构造函数的特点
                        2、多个构造函数适宜重载的形式存在的
                (4)、对象一建立就会调用与之对应的构造函数
                (5)、当一个类中没有定义构造函数时,那么系统会默认给该类加入一个默认的空参数的构造函数
                (6)、当在类中定义了用户的构造函数,则默认的构造函数将不存在
                (7)、构造函数与一般方法的区别
                        构造函数在对象建立时执行,只有一次
                        一般方法时,只要调用就会执行
                (8)、什么时候定义构造函数呢:当分析事物时,该事物存在剧本一些特性或者行为,那么将这些内容定义在构造函数中
十一、构造代码块
                (1)作用:给对象进行初始化,对象一建立,就运行,而且优先于构造函数执行。
                (2)、和构造函数区别
                        构造代码快是给所有对象进行统一初始化
                        而构造函数是给对应的对象初始化
                (4)、格式
                        {  }
                (3)、

class Car{
private num;
{
System.out.print("run");
}
void run(){
System.out.print("run");
}
public static void show(Car c){
System.out.print("run");
}
public static void main(String[] args){
new Car().run; //使用匿名对象
show(new Car());
}

}
十二、this关键字:区*部变量和成员变量
                (1)、this 代表本来的对象,代表它所在函数对象的引用。简单说哪个对象在调用 this 所在的函数,this就代表哪个对象
                (2)、是用于区*部变量和成员变量同名的情况
十三、this 关键字 应用

class Demo{
privat int age = 0;
Demo(int age){
this.age = age;
}
void compare(Demo d){
return this.age==d.age; //this 为调用该函数的对象的引用,的为传过来的对象
}
public static void main(){
Demo d = new Demo(20);
Demo d2 = new Demo(21);
d.compare(d2);
}
}
十四、this关键字在构造函数间调用
                (1)、this 构造函数,只能放在构造函数的第一行,否则会报错,因为初始化要先执行

  class Demo{
privat int age = 0;
privat String name = 0;
Demo(int age){
this.age = age;
}
Demo(String name,int age){
this.name = name; //这两个是一个,this 就相当于 对象(数据)
this(age); //
this.age = age;
}


public static void main(){
Demo d = new Demo(20);
Demo d2 = new Demo("zhangshuai",21);
}
}