复习第二天第二部分对象

方法的重载

方法的重载 : 是方法的两大特性之一
    方法的特性 : 
        重载 -> overload
        重写 -> override  -> 继承学完
        
重载 -> overload -> 现象级的方法特征
    现象: 在一个类中,出现了多个方法同名且不报错的情况,称这个方法发生了重载现象
    
    重载现象的前提条件:
        1. 多个方法必须在同一个类中
        2. 多个方法的方法名必须一样
        3. 多个方法之间的形式参数列表不同 (个数不同,类型不同,类型顺序不同)
        4. 重载与返回值类型无关
        5. 重载与方法的形参变量名无关
        
   重载知识点是一个理解知识点,重载我们自己写的少,但是用的多 (重载的特性是为了方便调用者的)     
            
     如何调用有重载特性的方法? -> 重要的
        不用操心,JVM会根据你调用方法时传入的具体实参匹配最佳的方法执行!            

方法的错误总结

    1. 方法名是红的
        a. 方法名写错了
        b. 没这个方法
​
    2. 实参列表有红色下划线
        a. 形参实参不匹配
​
    3. 整个方法调用都在报错
        调用的方式错了!
        
        学习是学会的不是教会的

面向对象的编程思想

面向对象编程思想:
    思想: 一种想法,一种思考问题的方式 
        思想的作用 : 思想决定了行为
    编程思想 : 编写代码时思考问题的方式
        编程思想的作用 : 决定如何编写代码 -> 编写代码的方式
    面向对象的编程思想 : 众多编程思想中的一种 -> 这一种编程思想非常的nice!
        Java语言的编程思想就是面向对象编程思想
    //编程思想的种类 : 面向过程 -> 面向对象 -> 面向切面/面向函数式 ....   
    
    
面向过程编程思想:    凡事必躬亲 -> 所有的事情自己亲自去完成 -> 目前咱们百分之90以上的代码都是面向过程的编程思想完成的;
​
面向对象编程思想:   自己的事情别人做 -> 懒人思维(行为上的懒,思想上是巨人)
​
面向对象的三大特性 : 封装,继承,多态    
​
面向对象的三大特点 :
    1. 更符合我们平时的思维习惯
    2. 把复杂的问题简单化(把简单的问题自己不用做了)
    3. 把我们从执行者变成指挥者
    
洗衣服
    面向过程 : 泡一泡 -> 扭一扭 -> 揉一揉 -> 搓一搓 -> 甩一甩 -> 晾一晾
    面向对象 : 准备一台洗衣机(对象) -> 衣服搞里头 -> 启动 
买电脑
    面向过程 : 打车去广埠屯 -> 选配置 -> 和老板讨价还价 -> 组装 -> 打包运回来
    面向对象 : 打开JDAPP(对象) -> 选配置 -> 下单
    
    服务员点单 : 对象-> 服务员  
        在服务员点单到上菜的整个过程中,涉及到非常多的面向对象思想的应用
        
 -> 万物皆对象 (Thinking in Java -> Java编程思想)
        
  简单的回答是什么 -> 在哪用 -> 怎么用 -> 用的时候可能会出什么问题 -> 如何解决 -> 此问题/此功能除了这种方式还有什么方式可以解决/这个功能除了面试官问的知识点还有什么其他的知识点可以解决  -> 循环....    
        
面试环节中面向对象编程思想的对答:
    面向对象思想更符合我们平时的思维习惯,把复杂的问题简单化(把简单的问题自己不用做了),把我们从执行者变成指挥者. 在一Thinking in Java这边书中对面向对数思想有 万物皆对象的描述 ,世间万物全都可以使我们的对象.例如
面试官您面试的这个过程就涉及到非常多面向对象思想的应用, 面试官您面试肯定是因为公司的项目有了新的需求,以您的实力完全可以一个人胜任,但是您有更重要的工作需要去统筹,所以您使用了您面试的功能来面试一些 具备开发功能的人 例如我 来帮您完成项目功能的实现; 

类和对象的关系

类 : 种类,类型 : 代表的是抽象的事物 -> 一个事物的总称
 
对象 : 此类事物的具体化 --> 真正用的是对象 -> 具体的事物
​
先有类 才能有对象!!
    
类是对象的母版 !    

定义类的格式

为什么要定义类 : 为了模拟现实世界中的 各种事物!
    
如何定义类: 此类类的功能是 描述生活中的事物 -> 事物描述类    
    public class 事物的名称{
        //描述信息 -> 属性 -> 成员变量
        //能做的事情 -> 行为 -> 成员方法
    }
    
    //例如:
    public class Student{
        //属性 : 定义属性的时候不需要赋值
        //1. 常识方面 : 类是描述一类事物的,这类事物中每一个具体的对象有自己的属性值
        //2. 语法方面 : 成员变量有默认值, 此默认值请参照数组元素的默认值
        String name;//null
        int age;//0
        
        //行为
        //学习
        public void study(){ //在描述事物的时候,编写行为的方法时,不要再方法上加static
            sout("学生学习");
        }
    }
​
//如果在main方法所在的类中定义方法,请加static
//如果在事物描述类中定义方法,不要加static

如何使用类: 创建此类的对象

如何使用类: 
创建此类的对象的步骤: 
1. 创建对象
    类名 对象名 = new 类名();
​
    new : 
        1. 创建对象
        2. 在堆内存中开辟了内存空间
        
2. 对象名.属性 / 对象名.方法()        
            
            
 服务员点单
 万物皆对象
 对象调属性/对象调方法

private

public : 访问权限修饰符 -> 公共的,公开的 -> Java中最大的访问权限
private : 访问权限修饰符 -> 私有的 -> Java中最小的访问权限修饰符
    作用的地方 : 作用在类的成员上(修饰成员变量和成员方法)
    被private修饰后的成员具备的特点 : 只能在当前类中访问    
    
    好处: 提高代码的安全性!(需要getter and setter 方法配合)
        
死规则 : 以后在描述事物的时候,编写事物的属性,必须把所有的属性都用private修饰,并为每一个属性提供getter and setter方法; (2个方法)   

变量访问的原则

变量访问的原则 : 就近原则
​
近 ---> 远 : 局部位置 > 本类的成员位置 > 父类的成员位置

this

//重点 : 
this : 就是用来打破变量访问的就近原则 -> 强制访问本类员位置上的变量
​
    格式: this.变量名 -> 强制去访问本类成员位置上的变量
    格式: this.方法名(实参) -> 强制去访问本类成员位置上的方法  //无意义 所有的方法都是成员方法
    
---------------------------------------------
//理解
this : 本类对象的引用 -> 哪个对象使用含有this关键字的方法,这个this就是那个对象
​
    本类对象的引用:
        本类 : 当前类 -> this 所在的那个类
        对象 : new 出来的东西 -> 本类对象 : this 所在的那个类的对象
        的 : 定冠词
        引用 : 等号左边的那个变量叫引用 -> Student stu = new Student(); //stu : 引用
        
this :哪个对象使用含有this关键字的方法,这个this就是那个对象
​
对象调用含有 this 关键字的方法,那么就好比对象在照镜子,此时镜子里出现的那个对象就是此时this是代表的对象! 

自动生成getter and setter方法

IDEA可以自动生成所有属性的getter and setter : alt + insert/ins
    在空白位置右键 -> generic

成员变量和局部变量的区别

1. 定义的位置不同
    局部变量 : 方法内和方法的形参上
    成员变量 : 类中方法的外面
    
2. 作用域不同 //变量在其定义的大括号内有效 
    局部变量 : 方法内
    成员变量 : 整个类中有效
    
3. 在内存中的位置不同 
    局部变量 : 栈内存中
    成员变量 : 堆内存中
    
4. 初始化值不同
    局部变量 : 没有初始化值,但是使用之前必须赋值才能使用
    成员变量 : 根据成员变量的类型给与默认值
        整数 0 浮点 0.0 字符: '\u0000' 布尔 false 所有的引用数据类型 null
            
5. 生命周期不同 
    局部变量  随着方法的弹栈死亡 -> 跟着方法走 -> 活的短一些
    成员变量 : 随着对象的创建而产生,随着对象的死亡而死亡 -> 跟着对象走 -> 活的久一些
    
    因为在类中的位置不同,导致了作用域不同和在内存中的位置不同;
    因为在内存中的位置不同,导致了初始化值不同和生命周期不同;
​
    //成员变量/成员方法 属于 对象!! 
    //局部变量 属于 方法!!
---------------------------------------------------
 6. 颜色不同   (IDEA软件的默认主体)
        灰色 : 没有使用的
        使用了 ->
            局部变量/方法 : 黑色,细的字体
            成员变量 : 紫色,粗的字体

封装特性的好处

1. 循环 : 封装重复的代码逻辑 -> 提高代码的复用性
2. 方法 : 封装重复的功能 -> 提高代码的复用性
3. private : 此关键字的使用也是封装的特性 -> 提高代码的安全性
4. 定义事物描述类 : 事物描述类中封装 此类事物的属性和行为 -> 提高了代码的多样性

构造方法

构造方法 : 用来构建创造"对象"的方法
​
作用:
    1. 用来创建对象的方法 -> 创建对象其实就是在调用相应的构造方法
    
new 到底干了什么?
    1. 创建了对象
    2. 开辟了堆内存空间
    3. 调用了相应的构造方法
    
构造方法的格式:
    无参构造方法的格式:
        public 类名(){
            //方法体;
        }
    带参构造方法的格式:
        public 类名(对象的属性){
            //方法体; -> 给属性依次赋值!
        }

构造方法的注意事项

1. 如果一个类中没有编写任何构造方法,JVM会赠送一个没有任何形参的构造方法 -> 无参构造
2. 构造方法没有返回值类型的板块 -> 构造方法的作用固定 : 一定返回一个此类的对象!!
3. 构造方法也可以构成重载现象
4. 带参构造方法可以在创建对象的同时给属性赋值
5. 如果你在一个类中没有写构造,送你一个默认的无参构造方法,为了让你方便创建对象
    当你自己编写了任何一种构造方法,默认赠送的无参构造就不送了!
6. 就算有全参构造也要自动生成getter and setter方法, 因为 setter方法可以对对象的属性进行修改!    
7. 构造方法可以自动生成
    无参构造 : alt + insert + constructor -> select none;
    全参构造 : alt + insert + constructor -> 全选ctrl + a + ok;

定义事物描述类的标准

1, 必须私有所有的属性 (成员变量必须私有) -> 提高安全性
    -----以下都是自动生成-------
2, 必须生成无参构造 -> 为了快速创建对象
3. 必须生成全参构造 -> 为了创对象的时候同时给属性赋值
4, 必须自动生成所有属性的getter and setter 方法 //必须自动生成!!  -> 提供私有属性的公共访问方式   
    
//行为 -> 表示功能的成员方法 根据题目的需求来    
​
​
如何使用事物描述类
    1. 创建对象
    2. 对象调方法/对象调属性

猜你喜欢

转载自blog.csdn.net/m0_70793154/article/details/127166210