前言
⭐️感谢相遇,唤我沈七就好。
⭐️如果能和你一起进步那就太好啦。
对象与类
一、面向对象
概念:面向对象程序设计(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;
}
内存分析
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以上就是对 的全部讲解啦,很感谢你能看到这儿。如果有遗漏、错误或者有更加通俗易懂的讲解,欢迎小伙伴私信我,我后期再补充完善。