对类和对象简单了解

本文详细介绍了Java中的面向对象编程基础,包括类的定义和使用、对象的实例化、this引用、对象的构造与初始化、封装概念以及访问限定符。通过实例解析了类与对象的关系、this引用的作用、构造方法的特性和封装的重要性。此外,还涵盖了静态成员、代码块以及内部类的概念和用法。

日升时奋斗,日落时自省 

目录

一、类和对象

1、什么面向对象

2、类定义和使用

2.1对类的简单了解

2.2类定义的格式

3、类的实例化

3.1类的实例化是什么

 3.2对类和对象的解释

4、this引用

4.1为什么要引用this呢

 4.2this引用的解释

4.3this引用特性

5、对象的构造及初始化

5.1如何初始化对象

5.2构造方法

5.3构造方法的特性

5.4就地初识化

6.封装

6.1封装是什么(简要理解)

6.2访问限定符

6.3封装之包

7.static成员(静态成员)

7.1static修饰成员变量

8.代码块

9.内部类

9.1内部类

9.2局部内部类


一、类和对象

1、什么面向对象

简单一点就靠对象完成一件事情,而我们之前了解的像C语言都是面向过程

事例:一件事,需要机器和人共同完成,这里的对象就是:机器、人;

2、类定义和使用

2.1对类的简单了解

类里面包含:属性、行为

属性:就好比是一个人的身高,体重,外貌等特征

行为:就好比是一个人在干什么

2.2类定义的格式

class Type{
    //成员变量
    //成员方法
}

class为定义类的关键字,Student为类的名字,{}中为类的主体

class Student{

    public String name;
    public int age;
    public double weight;
    public double high;
    
    public void Student(){
        System.out.println("三好学生");
    }
}

3、类的实例化

3.1类的实例化是什么

没有实例化前相当于我们设置的只是一个空壳,没有实际存在,设定之后才能算是一个对象

public class Realize {
    public static void main(String[] args) {
        Student student=new Student();
        student.name="小明";
        student.age=20;
        student.weight=120;
        student.high=180;
        student.person();
    }
}

 实例化图解

 3.2对类和对象的解释

(1)类只是一个模型

(2)类是自定义模型

(3)实例化出的对象,占用实际的物理空间,存储类成员变量

4、this引用

4.1为什么要引用this呢

在一些特殊的情况下,我们不得不用,当然啦,最好还是都用上,能免很多疏漏

(1)形参名不小心与成员变量名相同

使用例:(错误)

class Date{
    public int year;
    public int month;
    public int day;

    public void setYear(int year,int month,int day) {  //注意这里哦
        year = year;
        month = month;
        day = day;
    }
    public void printDate(){
        System.out.println(year+"-"+month+"-"+day);
    }

    public static void main(String[] args) {
        Date date1=new Date();
        Date date2=new Date();
        Date date3=new Date();

        date1.setYear(2022,8,3);
        date2.setYear(2022,8,4);
        date3.setYear(2022,8,5);

        date1.printDate();
        date2.printDate();
        date3.printDate();
    }

}

 运行结果:

 

为什么会全部都是默认值呢, 是因为在setDate方法中赋值,只是局部变量自己给自己赋值了,并没有给成员变量赋值,这里就需要this来引用调用对象,如何使用?

 更改处:(正确)

 运行结果:

 4.2this引用的解释

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问

4.3this引用特性

 (1)this的类型:对应类型引用,即那个对象调用就是哪个对象的引用类型

(2)this只能在“成员方法”中使用

(3)在"成员方法"中,this只能引用当前对象,不能再引用其他对象

5、对象的构造及初始化

5.1如何初始化对象

方法中未初始化会报错,作为成员变量未初始化不会报错,会直接默认为初始值

5.2构造方法

名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的声明周期内只调用有一次。

public class realize {

    public int year;
    public int month;
    public int day;

    public realize(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("this方法调用");
    }

    
    public void printDate(realize this) {
        System.out.println(this.year + "-" + this.month + "-" + this.day);
    }

    public static void main(String[] args) {
        realize date1 = new realize(2022, 8, 3);
        realize date2 = new realize(2022, 8, 4);
        realize date3 = new realize(2022, 8, 5);
        

        date1.printDate();
        date2.printDate();
        date3.printDate();
    }
}

以上代码的构造方法:

5.3构造方法的特性

(1)名字必须与类名相同

 (2)没有返回值类型,设置为void也不行

(3)构造方法可以重载

可以分为有参数的构造方法,还有无参数的构造方法

(1)无参数构造方法

(2)有参数构造方法

 注意:this必须放在构造方法的第一条语句

不能形成环,(死循环)

 

 例如这样就会构成死循环,报错

5.4就地初识化

 直接在成员变量上初始化

6.封装

6.1封装是什么(简要理解)

面向对象三大特性:封装、继承、多态

封装:简单看就是对权限的限制,私密数据的是不能被看见的,而只留下公开的接口和对象进行交互。

6.2访问限定符

类可以将数据以及封装数据的方法结合在一起,访问权限用来控制方法或者字段能否直接在类外使用

NO范围privadefaulprotectedpubl
1同一包中的不同类
2同一包中的不同类
3不同包中的子类
4不同包中的非之类

简单叙述:

public:就公共的意思,顾名思义能被看见

default:相当于范围增大了点,但还是属于隐私,这个也是默认权限

private:只有自己看见,其余人都看不见

天数修改成隐私之后,只能通过在一个类中访问,不能被其他类访问

 

 

6.3封装之包

使用import语句导入包

包就简单介绍一个:

import java.util.*;

 这里的*就可以直接找你需要的类,但是更建议显式的指定要导入的类名,否则还是容易出现冲突

 (1)自定义包(idea)

输入即可 

 

7.static成员(静态成员)

这里就是static 修饰的就是sex ,在java中,被static修饰的成员就是静态成员变量,其不属于某个具体的对象

7.1static修饰成员变量

使用例:

接下来的静态变量是直接初始化的,是公用的,直接用对象调用

public class Student {
    public String name;
    public static String sex="男";
    public int age;
    public double score;
    public Student(){

    }
    public Student(String name,int age,double score){
        this.name=name;
        this.sex=sex;
        this.age=age;
        this.score=score;
    }
    public static void main(String[] args) {
        Student student1=new Student("张某",18,4.0);
        Student student2=new Student("成某",28,3.0);
        Student student3=new Student("李某",10,5.0);
        System.out.println(student1.age);
        System.out.println(student1.name);
        System.out.println(student1.score);
        System.out.println(Student.sex);  //前面提及过静态修饰是对象操控的,直接用对象调用
    }
}

静态方法特性:

(1)不属于某个具体对象,是类方法

(2)可以通过对象直接调用,也可以通过类名加点(.)调用

(3)不能在静态中访问非静态

8.代码块

代码块分为:普通代码快,实例代码块,静态代码块

这里我们就说一下实例代码块和静态代码块

(1)实例代码块:一般用来初识化实例1成员变量

 (2)静态代码块:一般用于初始静态成员变量

区分就是静态代码块有一个static,实例代码块什么都没有 

注意:静态代码块不管多少个对象,其只会执行一次

           静态代码块是优先的,因为在jvm加载类时开辟空间并初始化的

           多个静态代码块在一起,按先后顺序进行

9.内部类

解释:一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类

内部类中,受访问权限权限影响

使用例:

 虽然都在同一个java文件中,但是编译过后都会形成单独的字节码文件

9.1内部类

(1)实例内部类

如果需要访问外部类,需要外部类.this.类名,因为在内部类会首先访问内部类的,没有之后再访问外部类,外部类没有,就真的没有了

外部类不能直接访问内部类,需要创建内部类的对象才能访问内部类

如何取实例内部类对象 

 (2)静态内部类:只能访问外部类的静态成员 

如何取静态内部类对象

 

 

9.2局部内部类

 局部类,在外部类的方法中又定义一个类,最小的红色方框是局部内部类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值