面向对象之类与对象的创建及构造器(构造方法)详解
java面向对象
1.类与对象的创建
1.1 类与对象的关系
-
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
- 动物、植物、手机、电脑…
- Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为
-
对象是抽象概念的具体实例
- 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。
- 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。
1.2 创建与初始化对象
- 使用new关键字创建对象
- 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
- 注意
- 1.我们不应该在每一个类中都加入一个main方法,类中不应该有main方法,就是一个单纯的类,一个项目中只有一个主启动类(main方法)
- 2.普通类中应该只有2种东西,属性字段和方法,一个类中只可能存在这两种东西
1.3 创建和初始化对象代码演示:
package oopdemo01.demo02;
public class Application {
//一个项目中应该只存在一个main方法
public static void main(String[] args) {
//类还抽象的,需要实例化
//类实例化后会返回一个自己的对象
//student对象就是Student类的具体实例
Person person = new Person();//实例化
Studen xiaoming = new Studen();
Studen xiaohong=new Studen();
xiaoming.name="小明";//对属性字段和方法进行具体的赋值实例化
xiaoming.age=5;
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
xiaoming.study();
System.out.println(xiaohong.name);
System.out.println(xiaohong.age);
}
}
package oopdemo01.demo02;
//创建学生类,普通类中只包括方法和属性字段,不写main方法
//通过类.方法名调用静态方法;通过new创建对象
//通过对象.方法名调用非静态方法
//类是抽象的,需要实例化,需要new出一个对象,new实例化后会返回一个对象名,
// 即在堆内开辟内存够,用于存储类中的属性字段和方法
//学生类
public class Studen {
//属性字段
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"在学习");
}
public void studerstud(){
System.out.println();
}
}
运行结果
小明
5
小明在学习
null
0
2.构造器(构造方法)详解
-
构造器的定义: 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点
- 1.必须和类的名字相同
- 2.必须没有返回类型,也不能写void
-
构造器的作用:
-
作用1:使用new关键字,本质就在调用构造器。
-
作用2:构造器一般用来初始化值
-
-
注意
-
1. 构造函数只有一个关键字public,函数名是类名,类中默认有一个无参构造,如果我们自定义了有参构造,那么就必须手写显示定义无参构造函数。
-
2.new的本质是在调用构造器,如果构造时没有参数则会调用默认的无参构造函数对对象中类中具有的属性进行初始化,如果new的对象有参数则会调用我们自己定义的有参构造函数对对象中的某些属性进行初始化。
-
3.构造器存在于类中,是属于类的方法之一,构造函数只有一个pubic关键字修饰,且构造函数的方法名是类名。
-
4.this表示该类的下的某些方法的某些属性值。
-
5.IDEA中构造器快捷键,alt+insert,直接快捷生成构造器。
-
6.构造了有参构造函数,则必须手写无参构造函数。
-
在IDEA中查看.class反编译后的文件: 点击IDEA右上角的项目结构---->Modules---->Add Content Root,将out文件夹加入列表,out文件里可查看所有class文件,找到Person.class打开
-
2.1 构造方法代码演示:
package oopdemo01.demo02;
public class Application {
//一个项目中应该只存在一个main方法
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person("an",18);//调用构造方法对类中有的属性进行赋值,类只是模板
System.out.println(person.age);
System.out.println(person.name);
}
}
package oopdemo01.demo02;
//java--class 点击IDEA右上角的项目结构---->Modules---->Add Content Root,将out文件夹加入列表,out文件里可查看所有class文件,找到Person.class打开
public class Person {
//一个类即使什么都不写,它也会存在一个方法
String name;
int age;
// 快捷建 alt+insert
//构造方法的作用
// 1.使用new 关键字本质是在调用构造器
// 2. 用来初始化值
public Person(){//显示的定于构造器
}
// 有参构造:一旦定义了有参构造,无参就必须显示定义
public Person(String name) {
//this. = 当前对象传进来的值;
this.name = name;
}
public Person(String name, int age) {
this.name = name; //this.属性值=传进来的属性值,this代表当前这个类
this.age = age;
}
}
运行结果
18
an
———————————————————————————————————————————————————————————————————————————————