栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022-07-19 第七小组 学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022-07-19 第七小组 学习笔记

闫馨月

目录

This关键字

this.属性名

this( )访问构造方法

封装

思想封装

代码层次的封装

构建对象的方法

什么时候用构造器赋值?

什么是getter & setter

总结


This关键字

this 关键字是JAVA常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。


this.属性名

this调用构造器的要求:

1、必须在构造器中使用this调用构造器

2、必须是第一句话(第一行代码)

this代表的是当前类的对象,this代表的是当前方法的调用者。

this既然是代表方法的调用者,它实际上和对象的作用是一样的, 既可以调属性,也可以调方法

一个类中可以有什么:属性,方法,构造器

this不能用在static方法中。为什么?

首先,static叫静态方法,也叫类方法,它先于任何的对象出现。在程序最开始启动的时候,就会为static方法分配一块内存空间,成为静态区,属于这个类。而不是static方法,必须在类实例化的时候,才会给分配内存空间,在实例化对象的时候JVM在堆区分配一个具体的对象,this指针指向这个对象。也就是说,this指针是指向堆区中的类的对象,而static域不属于this指向的范围所在,所以不能调用。

开发中,this通常用在什么位置:通常用在赋值,构造器赋值。


普通方法访问其他方法、成员变量时不使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。

比如,有一个学生类Student的定义:

public class Student {
    private String name;    // 学生姓名
    private double score;    // 成绩
    private int age;    // 年龄
}

name、score 和age 的作用域是private,因此在类外部无法对它们的值进行设置。因此可以为Student类添加一个构造方法,然后在构造方法中传递参数进行修改。

// 创建构造方法,为上面的3个属性赋初始值
public Student(String name,double score,int age) {
    this.name = name;    // 设置学生姓名
    this.score = score;    // 设置学生成绩
    this.age = age;    // 设置学生年龄
}

在 Student类的构造方法中使用了this关键字对属性name、score和age赋值,this表示当前对象。this.name=name语句表示一个赋值语句,等号左边的this.name是指当前对象具有的变量name,等号右边的name表示参数传递过来的数值。

接下来,创建一个 main()方法对Teacher类进行测试。

public static void main(String[] args) {
        Student student = new Student("西门",100.0,16);
        System.out.println("学生信息如下:");
        System.out.println("学生姓名:"+student.name+"n学生成绩:"+student.score+"n学生年龄:"+student.age);
    }

输出结果:

 注意:当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。

this( )访问构造方法

this( )用来访问本类的构造方法,括号中可以有参数,如果有参数就是调用指定的有参构造方法。

构造方法是类的一种特殊方法,没有返回值,方法名称和类名相同。

定义一个学生类Student,使用this()调用构造函数给name赋值。

本案例参考:http://c.biancheng.net/view/953.html

public class Student {
    String name;

    // 无参构造方法(没有参数的构造方法)
    public Student() {
        this("张三");
    }

    // 有参构造方法
    public Student(String name) {
        this.name = name;
    }

    // 输出name和age
    public void print() {
        System.out.println("姓名:" + name);

    }

    public static void main(String[] args) {
        Student stu = new Student();
        stu.print();
    }
}

封装

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,通过该类提供的方法来实现对隐藏信息的操作和访问,简单的说就是隐藏对象的信息,留出访问的接口。

思想封装

把一堆重复执行的代码封装成方法,把一堆重复执行的方法封装成一个类。

代码层次的封装

所有的属性私有化。private,每个属性提供对应的

特点:

1.只能通过规定的方法访问数据

2.隐藏类的实例细节,方便修改和实现。

构建对象的方法

和数组相似,对象也是引用数据类型,只能使用new运算符从堆中分配内存;

创建对象的一般语法:类名 引用名 = new 类名();

使用已经定义好的类,创建该类对象的过程称为“实例化”。

同样的,只有先实例化类的对象,才可以访问到类中的成员(属性和方法);

使用成员运算符(.)来访问成员属性或成员方法

一般语法是:对象名.成员名

如:std.age = 18; //为成员属性赋值

std.dining(); //调用成员方法

什么时候用构造器赋值?

看创建对象是为了干什么?如果说创建对象仅仅是为了调用这个类的方法,建议使用无参构造器  如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值。


什么是getter & setter

getter 是一种获得属性值的方法,setter是一种设置属性值的方法

getter负责查询值,它不带任何参数,setter则负责设置键值,值是以参数的形式传递,在他的函数体中,一切的return都是无效的。


例:编写一个包含名为Calculator类的程序。定义两个整型属性以及对该两个变量的setter和getter,编写用于对两个属性执行加、减、乘、除运算方法。在main方法里创建该类的对象并访问这些方法。

package night;

public class Calculator {
    private int a;//定义属性
    private int b;
    int c;
    public void setA(int a){    //构造方法
        this.a=a;
    }
    public int getA(){
        return a;         //返回到private int a;
    }
    public  void setB(int b){
        this.b=b;
    }
    public int getB() {
        return b;
    }
    public void augment(){  //方法
        c=a+b;
        System.out.println(c);
    }
    public void reduce(){
        c=a-b;
        System.out.println(c);
    }
    public void ride(){
        c=a*b;
        System.out.println(c);

    }
    public void divide(){
        c=a/b;
        System.out.println(c);
    }
}
package night;

public class Vasssal {

        public static void main(String[] args){
            Calculator calculator=new Calculator();  //开辟新的class空间
            calculator.setA(24);
            calculator.setB(45);
            System.out.println("请输出a+b:");
            calculator.augment();        //调用calculator类中的方法
            System.out.println("请输出a-b:");
            calculator.reduce();
            System.out.println("请输出a*b");
            calculator.ride();
            System.out.println("请输入a/b");
            calculator.divide();
        }
    }


输出:


总结

今天学了This关键字、this()构造方法、封装、getter方法和setter方法...This掌握的相对来说是OK的,也记住了this不能用在static方法中,以及构造方法的首字母必须大写等等,getter和setter还是没有弄明白,需要请求支援啦!!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号