类与对象的关系:
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
动物、植物、手机、电脑.....
Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为
对象是抽象概念的具体实例:
张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例
能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念
创建与初始化对象:
使用new关键字创建对象
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
类中的构造器也成为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两个特点:
1.必须和类的名字相同;
2.必须没有返回类型,也不能写void
构造器必须要掌握
类与对象的创建:
package com.rgf.oop.Demo02;
//学生类(一个类中只有属性和方法)
public class Student {
//属性:字段
String name;//默认为null
int age;//默认为0;
//方法:
public void study(){
System.out.println(this.name+"在学习");
}
}
package com.rgf.oop.Demo02;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//类:类是抽象的,需要实例化
//类实例化后会返回一个自己的对象!
//student对象就是一个Student类的具体实例!
Student xiaohong = new Student();
Student xiaoming = new Student();
xiaohong.name="小明";
xiaoming.name="小红";
xiaohong.age=15;
xiaoming.age=20;
System.out.println(xiaohong.name);
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
System.out.println(xiaohong.age);
//学程序好?可以对世界进行更好的建模!
//以类的方式组织代码,以对象的组织(封装)数据
}
}
可以通过对代码的分区域编写,可以有更好的体验的效果。
用鼠标右键点击项目,点击Split Down或者 Split Right,即可将代码区域分开。
使用IDEA获取class文件:
1.点击file,点击project structure,
2.点击Modules,点击Add,将out文件加入进去,之后再加文件的过程中点击ok,再点击Apply。再点击ok.
3.即可再项目中找到out,即可发现class文件。
我们通过对类的分析,可知,我们编写如下所示的代码来了解class类里面的代码。
package com.rgf.oop.Demo03;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person();
}
}
package com.rgf.oop.Demo03;
public class Person {
//一个类即使什么都不写,它也会存在一个方法。
//显式的定义构造器
}
我们运行上面的main方法时,明明所调用的Person类什么都没有,但是仍然可以运行成功。
运行界面如下:
我们通过上述方法找到Person类的class类时,如下所示:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.rgf.oop.Demo03;
public class Person {
public Person() {
}
}
发现该空类Person类编译后生成的class文件并不是为空。
为了更好的理解构造方法,示例代码如下:
package com.rgf.oop.Demo03;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person("rgf");
System.out.println(person.name);//默认值为null
}
}
package com.rgf.oop.Demo03;
public class Person {
//一个类即使什么都不写,它也会存在一个方法。
//显式的定义构造器
String name;
int age;
//实例化初始值
//构造方法的作用。
//1.使用new关键字,必须要有构造器
//2.用来初始化值
public Person(){ //无参的构造方法可以初始化一些信息
this.name="rgf";
}
//有参构造:一旦定义了有参构造,无参就必须显式定义
public Person(String name){
this.name=name;
}
public Person(int age) {
this.age = age;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//alt+insert,可以快速生成构造器,如果所使用的是笔记本电脑,也可以
//在空白处点击右键,点击Generate,点击Construct,即可自动生成构造器
//如果在空白处点击右键,点击Generate,点击Construct,选择Select None时,生成的是无参的构造器。
//如果有多个参数可以选择,我们可以alt+shift,进行选择所生成的构造器函数。
}
/*
构造器:
1.和类名相同
2.没有返回值
作用:
1.new 本质在调用构造方法
2.初始化对象的值
注意点:
1.定义了有参构造之后,如果想使用无参构造,必须显式的定义一个无参的构造方法。
this.(代表当前类的)=值(参数传进来的值)
*/
在IDEA里面,我们可以快速的创建构造方法,如下所示:
1.利用alt+insert,可以进入界面,如果没有insert键,我们点击右键,点击Generate.
2.点击Constructor,我们进行创建构造方法。
3.我们选择要创建的类进行创建,如果要创建无参的构造方法,我们点击Select None,如果我们要创建有多个参数的构造方法,我们按住alt+shift,然后进行选择参数,最后点击ok即可出现构造方法。