Java~类和对象(类的定义方式以及对象的实例化、static、this关键字详解,了解封装、了解private、protected、public的区别、构造方法)

目录

类的定义和实例化

类和对象是什么?

类的定义格式

类的实例化

 关键字详解

static关键字

this关键字

封装

访问限定符(private、default、protected、public) 

构造方法


类的定义和实例化

Java是一门面向对象的语言,在面向对象的世界里,一切皆对象。面向对象是一种解决问题的思想,主要依靠对象与对象之间的交互完成一件事情。

类和对象是什么?

类是用来对一个实体(对象)来进行描述的,主要描述实体(对象)有哪些属性、有哪些功能,类是一种自定义类型,可以用来定义变量,在Java中,用类定义出的变量即为对象。

类的定义格式

在Java中定义类需要用到class关键字,具体定义格式如下:

class 类名(大驼峰命名方式){
    field;  // 属性或者字段变量
    method; // 行为或者成员方法
}
//例如:
class Student{
    public String name;
    public String id;
    public int age;
    public void doHomeWork(){}
}

类中包含的内容称为类的成员、属性。属性主要是用来描述类的,称为类的成员属性或成员变量。方法主要说明类的主要功能,称为类的成员方法。

注意事项:

1.一般一个文件当中只定义一个类;

2.main方法所在的类一般要使用pubic修饰(注意:Eclipse默认会在public修饰的类中寻找main方法);

3.public修饰的类必须与文件名称相同;

4.不要轻易修改public所定义的类名。

类的实例化

什么是类的实例化?

定义了一个类,就相当于在计算机中定义了一种新的类型。我们可以根据所定义出的类来定义实例(对象),用类类型来创建实例的过程,称为类的实例化。

类的实例化举例:

class Student{
    public String name;
    public String id;
    public int age;
    public void doHomework(){
        System.out.println(name + "写作业");
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Student student = new Student();
        student.name = "张三";
        student.doHomework();
    }
}

 关键字详解

static关键字

static修饰的成员变量,称为静态成员变量,静态成员变量的最大特性是:不属于某个具体的对象,是所有对象所共享的。

static修饰的成员方法,称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的。

静态成员变量特性 

1.不属于某个具体对象,是类的属性,所有对象所共享的,不存储在某个对象的空间中;

2.既可以通过对象访问,也可以通过类名访问,一般推荐使用类名访问;

3.JDK7以前,HotSpot(Java虚拟机)中存储在方法区,JDK8以后,类变量存储在堆中;

4.生命周期伴随类的一生(即:随类的加载而创建,随类的销毁而销毁).

静态成员方法特性

1.不属于某个具体的对象,是类的方法;

2.可以通过对象调用,也可以通过类名.静态方法(...)调用,一般推荐使用后者;

3.静态方法没有隐藏的this引用参数,因此不能在静态方法中访问任何非静态成员变量;

4.静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时无法传递this引用。

static成员变量的初始化

static成员变量的初始化分为两种:就地初始化和静态代码块初始化。

①就地初始化

class Student{
    public String name;
    public String id;
    public int age;
    public static String classRoom = "CSDN";//就地初始化
}

②静态代码块初始化

class Student{
    public String name;
    public String id;
    public int age;
    public static String classRoom;
    //下为静态代码块初始化
    static{
        classRoom = "CSDN";
    }
}

this关键字

 this关键字代表的是对当前对象的引用,以此来访问当前对象在成员方法中所有成员变量的操作。

this的引用特性

1.this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型;

2.this只能在成员方法中使用;

3.在成员方法中,this只能引用当前对象,不能引用其他对象,具有final属性.

this的使用方法

1.this.成员变量(普通的成员变量,不能是静态的)

2.this.成员方法(普通的成员方法,不能是静态的)

3.this(),调用其他的构造方法,只能用在第一行。

封装

从语法层次上来说,就是把字段或者方法用private修饰符进行修饰,这样在类外,就不能拿到当前的字段和方法了,起到了封装作用。

访问限定符(private、default、protected、public) 

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,访问权限可以控制方法或字段能否直接在类外使用,Java提供了四种访问限定符:

范围privatedefaultprotectedpublic
同一包中的同一类可以访问可以访问可以访问可以访问
同一包中的不同类可以访问可以访问可以访问
不同包中的子类可以访问可以访问
不同包中的非子类可以访问

private: 即你无法访问,只有在同一个包同一个类中可以使用;

default:default权限是指什么都不写时的默认权限,在同一个包中可以访问,在其他地方不可以被访问;

protected:继承访问权限;

public:你可以访问,在任何地方都可以访问到.

构造方法

构造方法(也称为构造器)是一种特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

特性 :

1.名字必须与类名相同;

2.无返回类型;

3.创建对象时由编译器自动调用,并且在整个对象的生命周期内只调用一次;

4.构造方法可以重载;

5.如果没有显式定义,编译器会生成一份默认的构造方法,该构造方法是没有参数的;

6.构造方法中可以通过this来调用其他构造方法来简化代码,但是this语句必须是构造方法中的第一条语句;

7.构造方法在绝大多数情况下用public修饰。

举例如下:

public class Data {
    public int year;
    public int month;
    public int day;
    //无参构造方法
    public Data(){
        this.year = 2022;
        this.month = 2;
        this.day = 22;
    }
    //带有三个参数的构造方法
    public Data(int year, int month, int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printData(){
        System.out.println(year + "-" +month + "-" + day);
    }
    public static void main(String[] args) {
        Data data = new Data();
        data.printData();
        Data data1 = new Data(2022, 2, 23);
        data1.printData();
    }
}

上述代码示例采用了构造方法重载,分别创建了无参数的构造方法和带有三个参数的构造方法,运行结果如下:

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li_yizYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值