【JAVA知识梳理】对象与类:level one

前言

⭐️感谢相遇,唤我沈七就好。
⭐️如果能和你一起进步那就太好啦。

对象与类

一、面向对象

概念:面向对象程序设计(OOP)是一种程序设计的泛型,同时也是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

类是对象的抽象,对象是类的实体

//学生类
public class Student{
    
    

    //属性:字段
    String name;
    int age;

    //方法
    public void study(){
    
    
        System.out.println(this.name)
    }
}
public static void main(String []arr){
    
    



}

对象变量创建方式:

先声明在创建

Cat cat;//声明对象 

cat = new Cat();//创建对象

直接创建:

创建:格式

            类名称 对象名=new 类名称();
Cat cat = new Cat

方法传参

内存分析

堆取:存放new的对象和数组
可以被所有的线程共享,不会存放别的对象引用

栈区:存放基本变量类型(会包含这个基本类型的具体的具体数值)
引用对象的变量(会存这个引用在堆里面的具体地址)

方案区:可以被所有的线程共享
包含了所有的class和static变量

方法传参机制的两种方式分别是值传递和引用传递。

下面我们来分别讲解。

值传递

只要是调用一个方法就会产生一个新的栈

传递的是变量,形参的改变只在栈中进行。

所以形参的任何改变影响不到实参

在这里插入图片描述

引用传递

传递是对象变量,即对象在堆里的地址,可以通过形参来影响到实参

在这里插入图片描述

构造器

构造器是类的一种特殊的方法,它的主要作用是完成新对象的初始化。

构造器通常也叫构造方法、构造函数,构造器在每个项目中几乎无处不在。当你new一个对象时,就会调用构造器。
构造器几点要求:

没有返回值

方法名和类名相同

构造器由系统调用

如下

[修饰符,比如 public] 类名 (参数列表,可以没有参数){
    
    
	//不能有return
}

默认构造器
如果没有定义构造器,则会默认一个无参构造器,这就是为什么你定义了一个对象,但可以new 。
比如 People,没有定义任何构造器却可以new这个对象,如 new People() 。
如果自定义了构造器,则会覆盖默认构造器。

public class People {
    
    
    //无参
}

构造器重载

与普通方法一样,构造器也支持重载。一个对象中是可以支持同时定义多个构造器,通过不同的参数列表来实现重载。

经常看到代码中new一个对象时,有时传入参数,有时又可以不用传。比如:new People()跟new People(“张三”),这里就是重载了。

重载可以简单理解为:同个方法名,不同的参数列表。如果希望People能在外部通过new People() 或 new People(“字符串”) 来实例化,则通过以下代码即可

public class People {
    
    
    //通过new People()调用
    public People(){
    
    

}
    //通过new People("字符串") 调用
    public People(String str){
    
    

    }
}

构造器继承
关于继承的概念之后我们详细讲解,这里为了知识的全面性先简单提一下~

子类构造器会默认调用父类无参构造器,如果父类没有无参构造器,则必须在子类构造器的第一行通过 super关键字指定调用父类的哪个构造器,具体看下文例子。

final类是不允许被继承的,编译器会报错。很好理解,由于final修饰符指的是不允许被修改,而继承中,子类是可以修改父类的,这里就产生冲突了,所以final类是不允许被继承的。

构造器与封装
可以在构造器在调运 set 达到在 构造器 完成封装的目的。

在这里插入图片描述

this

this 代表当前对象

public Dog(String name,int age)
{
    
    
	this.name = name;
	this.age = age;
	
}

内存分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QKCTNnWQ-1651030346477)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220419103945283.png)]

this 可以用于 区分当前类的属性和局部变量

访问成员方法的语法 : this . 方法名(参数列表)

访问构造器语法 :this(参数列表);
注意只能在构造器中使用

即只能在构造器当中调用另一个构造器且必须放置在第一条语句

public T (){
    
    
	 this ("jack",100);//必须放置在第一条语句当中
	 System.out.print("T() 构造器")}
public T(String name,int age ){
    
    
    System.out.println("T(String name,int age ) 构造器")
}
//输出
//T() 构造器
//T(String name,int age ) 构造器

this 不能在类定义的外部使用,只能在类定义的方法中使用。

完结散花

ok以上就是对 的全部讲解啦,很感谢你能看到这儿。如果有遗漏、错误或者有更加通俗易懂的讲解,欢迎小伙伴私信我,我后期再补充完善。

参考文献

https://www.acwing.com/activity/content/19/

猜你喜欢

转载自blog.csdn.net/m0_66139206/article/details/124424349
one