• JavaSE基础入门_007_面向对象


    面向对象

     

    什么是对象

    什么是程序

    • 程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的指令集和.

    实现世界的组成

    • 世界是由什么组成的?

      • 有人说: "世界是由无数原子组成的"

      • 有人说: "世界是由无数事物组成的"

      • 有人说: "世界是由无数物体组成的"

      • .......

    • 在程序员的眼里, 世界的组成最为明确: "世界是由无数个对象组成的"

    什么是对象

    • 面向对象思想(Object Oriented Programming)

      • 一切客观存在的事物都是对象, 万物皆对象.

      • 任何对象, 一定具有自己的特征[有什么]行为[能做什么].

        • 特征: 称为属性, 一般为名词, 代表对象有什么.

        • 行为: 称为方法, 一般为动词, 代表对象能做什么.

    现实中的对象

    • 手机:

      • 属性: 材料, 屏幕亮度, 品牌, 价格.....

      • 方法: 打电话, 发短信.....

    程序中的对象

    • 如何使用程序模拟现实世界, 解决现实问题 ?

      • 首先, 在程序中, 必须具有和显示中相同的对象, 用以模拟现实世界.

      • 然后, 使用程序中的对象代表现实中的对象, 并执行操作, 进而解决现实问题 .

    • 现实中的对象多数来自于"模板", 程序中的对象也应该具有"模板".

     

    什么是类

    • 等价于现实对象的"模板".

    • 程序中的模板称为"类", 按照"类"创造出来的实体, 就是程序中的对象.

    类的抽取

    • 在一组相同或类似的对象中, 抽取出共性的特征和行为, 保留所关注的部分.

    • 具体操作:

      1. 明确现实中的对象

      2. 抽取共性(一组相同或类似的对象中)

      3. 程序中定义模板(类)

      4. 创建程序中的对象(实例)

      5. 用程序中的对象模拟(代表)现实中的对象

     

    类的组成

    类的定义

    public class Dog // 类名
    {
       String breed; //属性: 通过变量表示, 又称实例变量
       int age; //语法: 数据类型 属性名;
      //位置: 类的内部, 方法的外部
       
       
       public void eat() //方法: 通过函数表示,又称实例方法
      { //语法:
           System.out.println("eatting"); //public 返回值 方法名(形参){//方法主体} 不写static
      }
    }
    • 一个类[模板]定义出来, 就是一种类型.

    对象的创建

    public class TestObject // 测试类
    {
    public static void main(String[] args)
    {
    //数据类型 变量名 = 值;
    Dog myDog = new Dog(); // 基于Dog类创建对象
    myDog.breed = "Hasiki"; // 访问属性: 对象名.属性名 = 值; // 赋值

    System.out.println(myDog+" "+myDog.breed); // 访问属性: 对象名.属性名; //取值
      }
    • 将对象保存在相同类型的myDog变量中, myDog变量称为"对象名"或"引用名"

    类与对象的关系

    类: 模板 ( 一个 ) =======创建========>> 对象: 实例 ( 多个 )

    • 类: 定义了对象应该具有的特征和行为, 类是对象的模板

    • 对象: 拥有多个特征和行为的实体, 对象是类的实例

    实例变量与局部变量的区别

     局部变量实例变量
    定义位置 方法或方法内的结构当中 类的内部, 方法的外部
    默认值 无默认值 字面值(同数组类型的默认值)
    使用范围 从定义行到包含其结构结束 本类有效
    命名冲突 不允许重名 可与局部变量重名, 局部变量优先

    实例方法

    • 对象的实例方法包含两部分: 方法的声明和方法的实现

      • 方法的声明:

        • 代表对象能做什么

        • 组成: 修饰符    返回值类型    方法名(形参列表)
             public void sleep(int hour) // 声明
                {
                     System.out.println("休息"+hour+"小时"); // 实现
                }
    • 方法的实现:

      • 代表对象怎么做: 即如何实现对应的功能

      • 组成: {}

     

    方法重载

    • 有些情况下, 对象的同一种行为可能存在多种实现过程.

    • 例如: 人对象的吃行为, 吃饭和吃药的过程就存在差异.

    • 重载(Overload): 一个类中定义多个相同名称的方法

    • 要求:

      • 方法名称相同

      • 参数列表不同(类型, 个数, 顺序)

      • 与修饰符, 返回值类型无关

    • 调用带有重载的方法时, 需要根据传入的实参去找到与之匹配的方法

    • 好处: 屏蔽使用差异, 灵活, 方便

     

    构造方法

    • 构造方法: 类中的特殊方法, 主要用于创建对象

    • 特点:

      • 名称与类名完全相同(包括大小写)。

      • 没有返回值类型。

      • 创建对象时,出发构造方法的调用,不可通过句点手动调用。

      • //无参构造方法:
        public Student()
        {
        System.out.println("Student()");
        }

     

    • 注意:如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法。

    对象创建过程

    • 对象的创建过程:

      • 内存中开辟对象空间

      • 为各个属性赋予初始值

      • 执行构造方法中的代码

      • [将对象的地址赋值给变量] // [ ]: 内容有时可省

    构造方法重载

    • 构造方法也可重载, 遵循重载规则.

    • public Teacher()
      {
      System.out.println("--------Teacher() Executed-------");
      }

      public Teacher(String name)
      {
      System.out.println("--------Teacher(String name) Executed-------");
      }
    • 创建对象时, 根据传入参数, 匹配对应的构造方法.

    • 如果自己已经定义了一个构造方法, 则系统不再提供默认的无参构造方法.

    构造方法为属性赋值

    Teacher t2 = new Teacher("Jerry",28,"male",5666D);

     

    this关键字

    • 类是模板, 可服务于此类的所有对象;

    • this是类中的默认引用, 代表当前实例; ( 指向当前实例的地址 )

    • 当类服务于某个对象时, this则指向这个对象

    • 当局部变量与实例变量重名时, 用this关键字做区分

     

    • this第一种用法: 调用当前实例属性、当前实例方法。如:this.name、this.sayHii()

    • this第二种用法:调用本类中的其他构造方法。如:this()、this(实参);解决代码冗余

      • public Student(String name,int age,String sex)
        {
           this.name = name;
           this.age = age;
           this.sex = sex;
        }
        public Student(String name,int age,String sex,double score)
        {
        this(name,sex,score);
           this.score = score;
        }
      • 注意:在本构造方法用this()语句调用其他构造方法,this()语句必须放在本方法第一行

      • this( ):调用无参构造;this(实参):调用实参构造

      • 级联调用并不会创造新实例,只有在 new 实例的时候才会创建

     

    总结

    • 什么是对象:

      • 一切客观存在的事物都是对象,万物皆对象

    • 什么是类:

      • 定义了对象应具有的特征和行为,类是对象的模版

    • 什么是方法重载:

      • 方法名相同、参数列表不同

    • 什么是构造方法:

      • 类中用于创建对象的特殊方法,名称与类名相同,没有返回值,不可通过句点调用

    • 什么是this关键字:

      • 代表当前实例,通过 this. 访问实例成员;通过this()/this(xxx)访问本类中的其他构造方法。

  • 相关阅读:
    oracle函数 exp(y)
    oracle函数 power(x,y)
    oracle函数 floor(x)
    oracle函数 ceil(x)
    oracle函数 ABS(x)
    简明Python3教程(A Byte of Python 3)
    C#实现窗口最小化到系统托盘
    简明Python3教程 4.安装
    ubuntu
    Javascript 笔记与总结(2-6)var
  • 原文地址:https://www.cnblogs.com/77-is-here/p/12898176.html
Copyright © 2020-2023  润新知