IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java~类和对象(类的定义方式以及对象的实例化、static、this关键字详解,了解封装、了解private、protected、public的区别、构造方法) -> 正文阅读

[Java知识库]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();
    }
}

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

?

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:08:34  更:2022-02-24 15:09:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:39:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码