zoukankan      html  css  js  c++  java
  • 22天学习java基础笔记之day06

                                 千里之行,始于足下。    

                                                                                ---老子


    Day06  面向对象思想  类与对象 

    一、面向对象思想

    1、面向对象与面向过程区别和联系。

                    A:区别:

                            **面向过程关注执行过程,这个时候我们是执行者。

                            **面向对象关注的是最终功能,这个时候我们是指挥者。

                    B:联系:.

                            **面向对象是基于面向过程的。

    2、面向对象

                    A:面向对象思想的特点。

                            **是符合人们思考习惯的一种思想。

                                    ***编程思想就是来源于生活。

                            **将复杂的问题简单化了。

                            **把我们从执行者变成了指挥者。                              

                    B:举例

                            **我去面试,boss调用了我的写程序的功能,不需要自己去做。

                            **找女朋友洗衣服、做饭。

                    C:请给我解释面向对象的思想。

                            **先说特点

                            **举例说明这些特点

    3、面向对象思考问题的方式

                    找对象,完成功能。

                    如果对象不存在,自己就造一个对象。

    4、面向对象的三大特性

                    A:封装

                    B:继承

                    C:多态

    此外面向对象还有个一个特性------->抽象!

    二、类与对象

    1、类

    是对现实世界事务的抽象。

                    A:类就是一类事物的抽象。

    2、对象

    是该类事物具体的存在个体。

    3、如何描述一个类

                    A:现实生活中我们用属性和行为来描述一个事物。

                    B:这个时候我们就可以用属性和行为来描述一个类

                            那么,他们在类中分别对应什么呢?

                            **属性 -- 成员变量 (属性)--------------->整个类中有效

                            **行为 -- 成员方法 (函数,功能)------>整个类中有效

    4、自定义类的分析过程

                    A:分析:

                            **首先分析这个类是个什么样的事物

                            **其次你就应该该事物具有哪些属性和行为

                            **把这个事物的属性和行为对应成我们类的成员变量和成员方法。

                    B:自定义一个电脑类

                            **属性 颜色,品牌,重量

                            **行为 开机,关机,上网

                       对应成类

                            //自定义电脑类

                            class Computer

                            {

                                    String color;//颜色

                                    String type;//品牌

                                    double weight;//重量      

                                    public void start(){}//开机

                                    public void stop(){}//关机

                                    public void online(){}//上网

                            }

    5、对象的创建和使用及对象的内存图

                    A:对象的创建

                    Student s = new Student();//创建一个Student的对象,并把它赋给了Student类型的s。

                    B:使用对象

                            如果你想使用类中的方法和属性,你必须通过类的实例(对象)来调用。

                            调用方式:

                                    对象名.属性;

                                    对象名.方法名(参数列表);

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

    1、作用范围

                    成员变量作用于整个类。

                    局部变量只作用于它所属的范围(函数,语句);

    2、生命周期&位置

                    成员变量存储在堆内存中,是属于对象的,随着对象的存在而存在,随着对象的消失而消失。

                    局部变量存储在栈内存中,是属性它所属范围的,使用完立即被释放。

    3、初始值

                    成员变量都有默认初始化值。

                            **整型 0

                            **浮点型 0.0

                            **字符型 'u0000' 空字符

                            **布尔型 false

                            **字符串 null

                    局部变量没有默认值,要想使用,必须遵循:

                            先定义(声明),再赋值,最后使用。

    四、匿名对象(为了简化书写)

    1、概念

    没有名字的对象。是对象的一种简写形式。

    2、什么时候用?

                    A:该对象只执行一次方法的调用。多次调用必须起名字!

                            **new Car().start();

                    B:可以作为实际参数传递

                            **public static void method(Car c){}

                            **method(new Car());

    五、封装

    1、概念

    把实现细节隐藏,提供公共的访问方法。

    任何对象或者系统都应该有一个明确的边界,边界内部的改变对外部没有影响,在java中,类包含了数据和方法,将数据放到一个类中就构成了封装。他将变化的进行了隔离,这样大大的提高了程序的安全性,由于他提供了公共访问方式,我们只需要调用它的功能即可,这样就提高了代码的复用性(只关注功能不用在意具体实现),自然而然就方便使用了。我们只需要将类中的成员变量私有(在变量名前加private即可),并提供相对应的set和get方法。         机箱和主板的例子。

    私有只是封装的一种体现,隐藏才算是封装。

    2、好处

                    A:将变化隔离。

                    B:便于使用。

                    C:提高重用性。

                    D:提高安全性。

    3private关键字

                    A:private

                            **私有的

                    B:特点

                            **是一个权限修饰符。

                            **可以修饰成员,被修饰的成员只能在本类中访问

                    C:一般用法

                            **一般用于将成员变量私有,提供公共的get,set方法进行访问。            

            自定义类 一般格式:

                    class Student{

                            private String name;

                            public void setName(String n){

                                    name = n;

                            }

                            public String getName(){

                                    return name;

                            }

                    }

                    注意:set方法可用于对成员变量进行赋值。

    六、构造方法

    1、用途

    创建对象,并进行初始化动作。

    2、特点

                    A:构造方法名和类名相同

                    B:没有返回类型

    C:没有返回值

                    运行特点:对象创建时被调用。

    3、构造方法与成员方法的区别

                    A:格式区别

                            构造方法要求:方法名与类名相同,没有返回类型。

                            成员方法要求:记住函数的定义格式。

                    B:用途

                            构造方法用于创建对象,并初始化值。

                            成员方法用于完成一个功能。

                    C:什么时候被调用

                            构造方法一new就被调用。

                            成员方法时通过对象名来调用。

     

                            你想创建对象必须使用构造方法。

                            你想使用功能必须通过对象名来调用。

     

                            你想使用一个功能:首先创建对象,然后使用对象的功能。

    4、构造重载

                    A:构造方法名相同,参数不同。

                    B:构造方法的注意事项

                    **自定义类中如果没有构造方法,系统会默认给出一个无参构造方法。

                        **如果你给定了构造方法,系统将不再提供无参构造方法了。

                              ***如果给定的有无参构造方法,你可以继续使用无参构造方法来创建对象。

                              ***如果没有无参构造方法,你可以不使用。否则,就会报错。

                            **建议:每次我们都手动给出无参构造方法。

                    注意:带参构造方法也可以对成员变量进行赋值。

     

    七、this关键字

    1、概念

    代表本类对象的一个引用

                    A:方法被哪个对象调用,该方法内的this就代表哪个对象。

    2、使用场景

                    A:局部变量隐藏成员变量

                            class Student{

                                    private String name;

                                    /*

                                    public void setName(String n){

                                            name = n;

                                    }

                                    */

                                    public void setName(String name){

                                            this.name = name;

                                    }

                                    public String getName(){

                                            return name;

                                    }

                            }

                            Student s = new Student();

                            s.setName("张三"); 

                            String str = s.getName();

                            System.out.println(str);

                            System.out.println(s.getName());

     

                    B:构造方法中使用this

                            class Student{

                                    private String name;

                                    private int age;

                                    Student(){}

                                    Student(String name){

                                            this.name = name;

                                    }

                                    Student(int age){

                                            this.age = age;

                                    }

                                    Student(String name,int age){

                                            //this(name);//代表就是调用构造方法----构造方法中的调用方式

                                            this.name = name;

                                            this.age = age;

                                    }

                            }

                    C:比较年龄

                            public boolean compare(Person p){

                                    return this.age==p.age;

                                    //return this.getAge()==p.getAge();//是可以的。

                            }

    3、内存图看懂

    4、自定义类

    我们后面在自定义类的时候:

    1:给属性赋值有几种方式

            定义的时候给属性。

            A:set赋值 开发都用set。

            B:构造方法

    2:提供一个无参构造

    //自定义一个学生类

    class Student{

            private int age;//姓名

    private String name;//年龄

    Student(){}

            public void setAge(int age){

                    this.age = age;

            }

            public int getAge(){

                    return age; //return this.age;

            }

            public void setName(String name){

                    this.name = name;

            }

            public void getName(){

                    return name;    

            }

    }

  • 相关阅读:
    ASP.NET Core 使用Redis存储Session
    JS复制文本到剪切板
    Linux 升级修改libc gcc 文件名称,导致执行命令失效问题解决
    Linux 基础命令-CURL 表单上传文件
    CentOS 下部署 ASP.NET Core环境
    ASP.NET Core 添加日志NLog
    Windows 下TortoiseGit 设置避免每次登录帐号密码
    类加载机制与双亲委派
    句子的成分
    词的作用
  • 原文地址:https://www.cnblogs.com/aohongzhu/p/12938758.html
Copyright © 2011-2022 走看看