首页 > 编程语言 > 详细

java 面向对象 类与对象 三大特征---封装 构造方法

时间:2020-11-17 22:17:14      阅读:28      评论:0      收藏:0      [点我收藏+]

学习目标:

        能够理解面向对象的编程思想
        能够明确类与对象的关系
        能够掌握类的定义格式
        能够掌握创建对象的格式,并访问类中的成员
        能够根据类与对象的关系定义相关的事物
        能够理解对象的内存图解
        能够说出成员变量与局部变量的异同点
        能够理解private关键字的含义
        能够说出this关键字可以解决的问题
        能够理解构造方法的含义
        能够用封装的思想定义一个标准类     

    面向对象思想:    
            面向对象思想概述:

                Java语言是一门面向对象的程序设计语言。面向对象思想是一种程序的设计思想。
                我们在面向对象思想的指引下,使用Java语言去设计程序、开发计算机程序,这里的【对象】泛指现实中的一切事物,每种事物都有自己的【属性】和【行为】。
                面向对象思想就是在程序设计过程中,参照现实中的事物,将事物的【属性特征】、【行为特征】抽离出来,
                描述成计算机事件的的设计思想。它是区别于面向过程,强调是事物的行为去一步步执行的功能。

            【 物以类聚人以群分】

    举例:

        吃饭: 黄焖鸡

            面向过程:到菜市场买菜--->返回家洗菜---->切菜----->炒菜----->吃菜---->洗碗刷锅

            面向对象:  网上点菜[app]---->吃菜

        区别:
            面向过程:强调步骤
            面向对象:强调对象,这里的对象就是【app】

        特点:
            面向对象思想更符合人类的思考的习惯,站在领导者的角色上。它可以将复杂的事情简单化,

            并将我们从事情的执行者转变成指挥者。面向对象语言中,包含了三大基本特征:封装、继承、多态。

 



    类与对象:
        什么是类:
            类:是一组相关【属性】和【行为】的集合。可以把类看成一类事物的模板,使用事物的属性特征和行为特征
                来描述该类事物
            现实中,描述一类事物:
            属性:描述该类事物的一种,状态信息。
            行为:描述该类事物具备的功能

        什么是对象:
            对象:就是这一类事物的具体体现。对象是类的一个【实例】,必然具备该类事物的属性特征和行为特征。

        类与对象的关系:
            类是对一类事物的描述,是【抽象的】
            对象是一类事物的实例,是【具体的】
            类是对象的模板,对象是类的实体。

    类的定义:
        事物与类的对比:
            现实中的一类事物:
                属性:状态信息
                行为:事物能够做什么,具备的功能
            java中的类描述事物也是如此:
                成员变量:对应事物的属性
                成员方法:对应事物的行为

        类的定义格式:
            public class ClassName{
                //成员变量
                //成员方法
            }
            定义类:定义类的成员,包括成员变量和成员方法
            成员变量:和之前定义变量的格式一模一样,只不过位置不同,成员变量定义在类中,方法外
            成员方法:和之前定义的方法几乎是一样的,只不过去掉static

        对象的使用:
            对象的使用格式:

            对象创建的格式:
                类名 对象名 = new 类名();

            使用对象访问类中的成员信息:
                对象名.成员变量名;
                对象名.成员方法();

        类的练习
            定义一个类,用来模拟 手机 事物,属性:品牌、价格、颜色;行为:打电话、开关机、群发短信。
            测试访问手机的属性和行为

        成员变量的默认值:
            基本类型:
                整数类型    (byte、short、int、long)   0
                浮点型      (float、double)           0.0
                字符型      (char)                    ”\u0000“
                布尔类型    (boolean)                 false
            引用类型:
                数组、接口、类                          null
            备注:方法内定义的变量没有初始化是不能被使用的
            如果成员变量,没有进行赋值,系统会自动给默认值,规则和数组是一样的

        对象的内存图解
            一个对象,调用一个方法内存图解:
                备注:在栈内存中运行的方法,遵循”先进后出,后进先出“,不运行,不压栈
                此时变量phone指向堆内存当中的空间,寻找方法信息,执行该方法

            两个对象,调用一个方法内存图解:
                对象调用方法时,根据对象当中方法标记(地址值),去类中寻找方法信息,这样哪怕是多个对象,方法信息只保存一份,节约空间。


    成员变量和局部变量的区别
        变量根据定义的【位置不同】,我们给变量起了不同的名字
        public class People{
            String name = ”小明“;//成员变量
            public void eat(){
                String food = "鱼香肉丝";//局部变量
                System.out.println(name + "中午吃的是:" + food);
            }


        }

        在类中定义的位置不同:【重点】
            成员变量:定义在类中方法外
            局部变量:方法中或者方法声明上(形式参数)
        作用范围不同:【重点】
            成员变量:类中
            局部变量:方法中
        初始化值不同:【重点】
            成员变量:有默认值
            局部变量:没有默认值,必须先定义赋值,才能使用
        在内存当中存储的位置不同:【了解】
            成员变量:在堆内存当中
            局部变量:在栈内存当中
        生命周期不同:(从创建到消亡)【了解】
            成员变量:随着对象的创建而存在,随着对象的消失而消失
            局部变量:随着方法的调用而存在,随着方法调用结束而消失
        修饰符不同【了解】
            成员变量:可以使用修饰符
            局部变量:不可以使用修饰符

 


封装:
    封装概述:
        面向对象编程语言,模拟客观世界,客观世界里的成员变量都是隐藏在对象内部的,外界无法直接操作和修改
        封装可以认为是一个保护屏障,防止该类的代码和数据被其他类随意访问和修改。要访问该类的数据,必须通过指定的方式才可以
        适当的封装,可以让我们的代码更容易维护和理解,也加强了代码的安全性。

    原则
        将【属性隐藏】起来,如果想要访问类中的某个属性,提供【公共的方法】对其访问。

    封装步骤
        1.使用【private】关键字来修饰成员变量
        2.对需要访问的成员变量,提供对应的一对getXxx方法和setXxx方法。

    封装的操作---private关键字:
        private的含义:
            1.private是一个权限修饰符,代表最小权限
            2.可以修饰成员变量,也可以修饰成员方法
            3.被private修饰后的成员变量,和成员方法,只能在本类访问

        private的使用格式
        private 数据类型 变量名;
        public class Man{
            //1.使用private关键字修饰成员变量
            private String name;
            private int age;
            //2.提供getXxx方法和SetXxx方法,可以访问类中的成员变量
            //getXxx 获取类中的成员变量值
            public String getName(){
                return name;
            }
            //setXxx 设置类中的成员变量值
            public void setName(String name){
                name = name;
            }
            //提供age的getXxx方法和setXxx
            public int getAge(){
                return age;
            }
            public void setAge(int age){
                age = age;
            }
        }

    封装优化1---this关键字
        我们发现setXxx()方法当中形参名字不符合我们标识符的命名规范--见名知意,
        如果修改成和成员变量名字相同,会触发Java程序当中的就近原则,会把方法内的变量统统设定为形参变量。
        我们可以采用【this】关键字,来解决变量重名问题。

        this的含义
            this代表所在类的当前对象的引用(地址值),即对象对自己的引用
            备注:意思就是方法被哪个对象调用,方法中的this就代表那个对象。即谁调用this就是谁

        this的使用格式
            this.成员变量名

            使用this关键字修饰方法当中的成员变量,解决成员变量被隐藏的问题
            public class Man{
                //1.使用private关键字修饰成员变量
                private String name;
                private int age;
                //2.提供getXxx方法和SetXxx方法,可以访问类中的成员变量
                //getXxx 获取类中的成员变量值
                public String getName(){
                    return name;
                }
                //setXxx 设置类中的成员变量值
                public void setName(String name){
                    this.name = name;
                }
                //提供age的getXxx方法和setXxx
                public int getAge(){
                    return age;
                }
                public void setAge(int age){
                    this.age = age;
                }
            }
            备注:方法当中只有一个变量名,默认也是使用的this修饰,也可以省略不写

 

 



    封装优化2---构造方法
        当一个对象被创建出来的时候,构造方法用来初始化对象,给对象的成员变量赋初始值
        备注:无论你是否在类中定义构造方法,当类被定义出来的时候,系统会自动给该类分配一个构造方法,无参的构造方法
            一旦在类中显示的定义构造方法,Java自动提供的无参构造方法就会失效(被收回)

    构造方法的定义格式:
        修饰符 构造方法名(参数列表){
            //方法体内容
        }
        //构造方法没有返回值,构造方法名和类名完全一致,不需要void。

        练习构造方法的使用:
            public class Dog{
                private String name;
                private int age;
                private String brand;
                private String color;
                //优化封装 使用构造方法
                public Dog(String name,String brand,int age,String color){
                    //方法体内容
                    this.name = name;
                    this.brand = brand;
                    this.age = age;
                    this.color = color;
                }
                //java提供的默认的无参构造方法
                public Dog(){

                }

            }

        注意事项:
            构造方法名称必须和所在的类名完全一样,就连大小写一样
            构造方法不用生命返回值,连void都不用
            构造方法不能用return一个具体的返回值
            如果定义类时没有显示定义构造方法,系统会提供一个默认的无参构造方法
            一旦自定义一个构造方法,那么编译器将会收回默认提供的构造方法
            构造方法可以重载:方法名称相同,参数列表不同


    标准类------JavaBean
        JavaBean是Java语言编写类的一种标准规范。符合JavaBean的类,
        包含四部分:
            1.所有的成员变量都要使用private关键字修饰
            2.要为每一个成员变量提供一对公共的getXxx()setXxx()方法
            3.要编写一个无参的构造方法
            4.最好再提供一个全参构造方法
            这样标准类就叫做JavaBean


java 面向对象 类与对象 三大特征---封装 构造方法

原文:https://www.cnblogs.com/shangjinshuai/p/13995879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!