【博学谷学习记录】超强总结,用心分享|了解《JAVA-类》

类是封装对象的属性和行为的载体,在Java中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。

一,基础认识

1.成员变量

对象的属性就是成员变量,成员变量的作用域为整个类

例1:为Book类添加书名属性:

public class Book {                     //类
    private String name;                //String类型的成员变量
    public String getName(){            //name的Getter方法
        return name;
    }
    public void setName(String name){   //name的Setter()方法
    this.name=name;                     //将参数值赋予类中的成员变量
    }
}

在Java中需要使用class关键字来定义类,Book是类的名称。其中成员变量是String类型,成员变量可以设置初始值也可以不设置初始值,不设置的话会有默认值。成员变量前面有private的关键字,它用来定义一个私有成员。

2.成员方法对应于类对象的行为。以例1为例,它包含了setName()方法和getName()方法,这两个成员方法分别为设置图书名称和获取图书名称。

注意:要构造Java中的无返回值的成员方法,可以不使用void关键字表示。

说明:如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行。类的成员变量和成员方法也可以统称为类成员。

3.权限修饰符

主要有private,protect,public.且三个关键字的可访问的位置从左到右以此增大。

private:只能在本类中进行访问。

protect:同包的类可以访问(包括其他类和其子类),不同包的子类也可以访问。

public:可以在所有包的类中进行访问。

注意:如果一个类的成员变量没有权限修饰符进行修饰,那么这个成员变量或者方法的访问权限为同包的类才可以访问(包括其他类和子类)。

4.局部变量

如果在成员方法中定义一个变量,那么这个变量被称为局部变量,例如在例1中setName(String name)方法中,String name这个形参可以看作局部变量。

局部变量是在方法被执行时候进行创建,方法被执行结束的时候被销毁。局部变量被使用的时候必须进行赋值或者初始化,否则会出现编译错误。

例2:交换两个整数的值

public class ChangeDemo {
    public static int[] exchange(int [] arr){
        arr[0]=arr[0]^arr[1];        //数组第一个元素与第二个元素进行异或将结果传给第一个元素
        arr[1]=arr[0]^arr[1];        //数组第一个元素与第二个元素进行异或将结果传给第二个元素
        arr[0]=arr[0]^arr[1];        //数组第一个元素与第二个元素进行异或将结果传给第一个元素
        return arr;
    }

    public static void main(String[] args) {
        int arr[] ={25,45};    //创建一个数组用来接收两个需要交换的值
        System.out.println("第一个值为:"+arr[0]+" 第二个值为:"+arr[1]);
        arr=exchange(arr);      //调用交换方法
        System.out.println("第一个值为:"+arr[0]+" 第二个值为:"+arr[1]);
    }
}

运行结果如下:

5.this关键字

this关键字用来表示本类当前的对象,当前对象不是某一个实体的类,而是当前正在编辑的类。this关键字只能在本类中进行使用。例如例1中setName()方法。

public class Book {                     //类
    private String name;                //String类型的成员变量

    public void setName(String name){   //name的Setter()方法
    this.name=name;                     //将参数值赋予类中的成员变量
    }
}

以上例子中setName()方法中的形式参数与成员变量的名称相同,都为name,为了区分,所以Java就使用this关键字来代表本类对象的引用。

this关键字可以调用成员变量与成员方法,可以认为this就是本类的一个对象。在成员变量或方法的参数如果覆盖了成员变量的时候,就像以上的情况,就需要使用this关键字明确引用的是类成员的变量而不是局部变量。

二,类的构造方法

构造方法的特点:1.构造方法没有返回值 (构造方法在申明的时候不需要写void)         2.构造方法的名称要与本类的名称相同

注意:在定义类的时候如果没有定义构造方法,那么系统会自动定义一个不带参数的默认构造方法。如果在创建类的时候定义了一个有参数的构造方法,那么系统不会再创建默认的无参构造方法。

例3:构造一个练习生

public class Trainee {
    int skill;                //偶像练习生会的技能数量

    public Trainee() {        //无参构造函数
        this(1);         //使用this关键字在无参构造方法中调用有参构造方法
    }

    public Trainee(int skill) {//有参构造函数,将技能个数作为参数
        this.skill = skill;    //将参数技能的值赋值给属性
    }

    public void show(){
        if(skill==1){
            System.out.println("大家好,我会唱!");
        }else if(skill==2){
            System.out.println("大家好,我会唱,跳!");
        }else{
            System.out.println("大家好,我会唱,跳,rap!");
        }
    }

    public static void main(String[] args) {
        //创建练习生对象
        Trainee trainee1 = new Trainee();  //无参创建练习生对象
        Trainee trainee2 = new Trainee(3);  //有参创建练习生对象
        trainee1.show();
        trainee2.show();
    }
}

运行结果如下:

 三.静态成员与静态方法

静态成员与静态方法都是用static关键字进行修饰,被修饰的变量和方法属于类所有,区别于个别对象,可以在本类或者其他类使用类名“.”运算符调用静态成员。

例三:统计动物园动物种类。

package com.itheima.edu.info.Demo;

public class Animal {
    String name;                     //动物名称
    static int count=0;              //动物种类

    public Animal() {                //无参构造方法
        count++;                     //每构造一次count+1;
    }

    public Animal(String name) {     //有参构造方法
        this.name = name;
        count++;                     //每构造一次count+1;
    }

    public static void main(String[] args) {
        Animal animal1 = new Animal("熊猫");
        System.out.println("我是动物园第"+Animal.count+"种动物,我的名字叫:"+animal1.name);
        Animal animal2 = new Animal("金丝猴");
        System.out.println("我是动物园第"+Animal.count+"种动物,我的名字叫:"+animal2.name);
        Animal animal3 = new Animal("丹顶鹤");
        System.out.println("我是动物园第"+Animal.count+"种动物,我的名字叫:"+animal3.name);
        Animal animal4 = new Animal("东北虎");
        System.out.println("我是动物园第"+Animal.count+"种动物,我的名字叫:"+animal4.name);
        Animal animal5 = new Animal("扬子鳄");
        System.out.println("我是动物园第"+Animal.count+"种动物,我的名字叫:"+animal5.name);
    }
}

运行结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值