6.Java语言的类、对象和封装知识点总结

版权声明:原创,转载请说明,谢谢! https://blog.csdn.net/ajia5216/article/details/81842707

类与对象

1.面向对象思想

就是将做一件事(实现某个功能)通过创建对象,然后调用对象的行为来实现

2.与面向过程(思想)的区别

面向过程是自己一步一步的操作去实现功能,面向对象是把实现功能的部分交给对象的属性和行为去实现

3.类

具有相关属性和行为的一种事物的集合,比如说宠物猫、装水的杯子...等等

例如:宠物猫:

                      属性:颜色、重量...

                      行为:爬树、抓老鼠...

4.类的定义

格式:

        public class ClassName {

//成员变量

//成员方法

}

5.对象

每一种事物都有自己的属性和行为,好比如宠物猫,这是一个总的概述,他有自己的属性(品种、颜色、重量、叫声...),而对象就是指明的一只猫,他的各种“属性”都是确定的,那么对于宠物猫这个总述,这只猫就是一个“对象”。

 

6.对象的创建和使用

创建格式:

        类名 对象名 = new 类名();

使用格式:

对象名.成员变量;

对象名.成员方法();

7.类与对象的关系

类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。

类是对一类事物总的概括,对象是具体的哪一个

8.成员变量的默认值

整数:           0

浮点数:        0.0

boolean:         false

字符:           ‘\u0000’(空字符)

字符串:          null

9.成员变量与局部变量的区别

1定义位置不同:

成员变量定义在类中方法外,局部变量定义在方法内

2默认值不同:

成员变量的默认值如上,局部变量不赋值不可以调用

3内存中的位置不同:

对象是new出来,对象在堆里,成员变量跟着对象在堆里面,栈是保存变量,运行方法,局部变量跟着方法在栈里

4生命周期不同:

对象是new出来,跟对象诞生,所以成员变量跟着对象死亡,局部变量跟着方法的运行诞生,跟着方法死亡

封装

1.封装

将属性隐藏起来,相当于建立起了一层保护屏障,防止数据和代码被其他类随意访问。如果要访问,必须通过指定的方式。让代码更容易理解和维护,增加了安全性。

2.封装的方法

使用private(私有的)关键字修饰成员变量或成员方法。

3.设置器

getXxx方法,设置访问封装的成员变量值

4.访问器

getXxx方法,获取封装的成员变量值

例子:

5.IDEA自动生成getters/setter

右键选择,GenerateàGetter and Setterà选择成员变量点击OK

快捷键:ALT + insert

6.成员变量为boolean的访问器

isXxx访问器

setXxx 设置器

构造方法

1.封装的优化1:this关键字

this代表所在类的当前对象的引用(地址值),即对象自己的引用。(方法被哪个对象调用,方法中的this就代表那个对象)

方法参数中的变量名和成员变量的变量名相同时,用this关键字来区分

使用格式:

              this.成员变量名;

2.封装的优化2:构造方法

1.当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值

2.如果没有定义构造方法,Java默认赠送一个无参的构造方法,如果创建了则不赠送

3.构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,不需要void。

3.封装的优化3:构造方法-重载

和方法重载一样,参数列表不同,方法名相同

1.只能new调用,用来创建对象

2.给成员变量赋值

 

开发中一般   写一个无参构造方法,写一个全参构造方法

4.IDEA自动生成构造方法

右键选择 generateàconstructorà选择成员变量(构造方法的参数)

可以参考自动生成get、set方法的图示

5.构造方法注意事项

1.自己不定义构造方法,系统会送一个 无参

2.自己定义了构造方法,系统不送

3.构造方法可以重载,项目中,写一个无参,全参

6.标准的JavaBean类

a) 成员变量必须private

b) 配套get/set

c) 构造方法

d) 其他方法

示例:测试类如下

package com.itheima.day06;

public class Test01 {
    //两个成员变量
    private String name;
    private int age;
    //无参数的构造方法
    public Test01() {
        System.out.println("这里是无参构造方法,用来初始化变量");
    }
    //有参数(全参)的构造方法
    public Test01(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //成员变量name配套的get方法
    public String getName() {
        return name;
    }
    //成员变量name配套的set方法
    public void setName(String name) {
        this.name = name;
    }
    //成员变量age配套的get方法
    public int getAge() {
        return age;
    }
    //成员变量age配套的set方法
    public void setAge(int age) {
        this.age = age;
    }
    //其他方法
    public void show(Test01 test){
        System.out.println("姓名:"+name+"年龄:"+age);
        System.out.println("这是类中的其他方法,可以把创建的对象传递过来");
        System.out.println("这个方法里面可以无条件调用private的成员变量");
    }

    public static void main(String[] args) {

    }
}

调用如下:

package com.itheima.day06;

public class Test02 {
    public static void main(String[] args) {
        Test01 test1 = new Test01();//创建一个对象,调用无参构造方法
        Test01 test2 = new Test01("张三",18);
        test1.show(test1);
        test2.show(test2);
    }
}

 输出如下:

 

 

猜你喜欢

转载自blog.csdn.net/ajia5216/article/details/81842707
今日推荐