zoukankan      html  css  js  c++  java
  • Java面向对象

    面向对象OOP

    什么是面向对象?

    面向对象编程(Object-Oriented Programming,OOP)

    本质

    以类的方式组织代码,以对象的形式封装数据
    
    以类的方式组织代码,以对象的形式封装数据
    
    以类的方式组织代码,以对象的形式封装数据
    

    面向过程的思想

    • 步骤清晰简单,第一步做什么,第二步...
    • 适合处理一些较为简单的问题

    面向对象的思想

    • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。

      最后,才对某个分类下的细节进行面向过程的思索。

    • 适合处理复杂的问题,适合处理需要多人协作的问题

    对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

    类和对象的关系

    类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。

    如:动物、植物、手机、电脑等等


    对象是抽象概念的具体实例

    张三就是一个具体的人,张三家的旺财就是动物的一个具体实例。

    能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。

    创建对象

    对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

    • 声明:声明一个对象,包括对象名称和对象类型。
    • 实例化:使用关键字new来创建一个对象。
    • 初始化:使用new创建对象时,会调用构造方法初始化对象。
    public class Application {
        public static void main(String[] args) {
            // 类:抽象的模板 Student类
            // 对象:具体的个体 小明
            Student xiaoMing = new Student();
            xiaoMing.name = "小明";
            xiaoMing.age = 18;
            xiaoMing.study();
    
            // 实例化得到 小红 对象
            Student xiaoHong = new Student();
            xiaoHong.name = "小红";
            xiaoHong.age = 18;
            xiaoHong.study();
        }
    }
    
    class Student {
    
        // 属性:字段
        String name;
        int age;
    
        // 方法
        public void study(){
            System.out.println(this.name+"在学习");
        }
    }
    

    构造器

    构造器也称构造方法,每个类都有构造方法。

    构造方法的特点:

    • 必须和类名相同
    • 不能有返回类型,也不能写void

    作用

    • new 本质在调用构造方法
    • 初始化对象的值

    如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

    在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

    下面是一个构造方法示例:

    默认构造器

    Application.java

    public class Application {
        public static void main(String[] args) {
            // 类:抽象的模板 Student
            // 对象:具体的个体 小明
            Student xiaoMing = new Student();
        }
    }
    
    class Student {}
    

    Application.class

    public class Application {
        public Application() {
        }
    
        public static void main(String[] args) {
            new Student();
        }
    }
    

    Student.class

    class Student {
        Student() {
        }
    }
    

    可以看到如果在java代码中没有显式定义构造方法,编译器将每个类编译成对应的class文件时,添加了一个无参构造器。

    public class Application {
        public static void main(String[] args) {
    
            // 一旦自己定义了构造器,原始的默认构造器就失效了,需要自己显式定义。
            // Student xiaoMing = new Student(); //报错
            Student xiaoMing = new Student("xiaoMing");
            System.out.println(xiaoMing.name);
    
        }
    }
    
    class Student {
        public String name;
    
        
        public Student(String name) {
            this.name = name;
        }
    }
    

    Student.class

    class Student {
        public String name;
    
        public Student(String name) {
            this.name = name;
        }
    }
    

    在class文件中原来的无参构造器不见了。

    IDEA快捷键 Alt + Insert 快速创建构造器

    类的内存分析

    image-20200510145204489

    小结

    1. 类与对象

      类是一个模板:抽象

      对象是一个具体的实例

    2. 方法的定义和调用!

    3. 对象的引用

      引用类型--基本类型(8)

      对象都是通过引用来操作的:栈-->堆

    4. 属性:字段Field 成员变量

      默认初始化

      修饰符 属性类型 属性名 = 属性值;

    5. 对象的创建和使用

      • 必须使用new关键字创建对象,构造器

        Person person = new Person();

      • 对象的属性 person.name

      • 对象的方法 person.sleep()

    6. 类:

      • 静态的属性-->属性
      • 动态的行为-->方法
  • 相关阅读:
    笨办法学习python之hashmap
    python实现三级菜单源代码
    ql的python学习之路-day3
    ql的python学习之路-day2
    Spring的数据库开发
    Spring学习之Aspectj开发实现AOP
    spring学习之依赖注入DI与控制反转IOC
    spring学习之第一个spring程序
    spring学习之spring入门
    Java线程(一)——创建线程的两种方法
  • 原文地址:https://www.cnblogs.com/1101-/p/12882664.html
Copyright © 2011-2022 走看看