面向对象
面向过程思想
- 面向过程的步骤清晰简单,第一步做什么,第二步做什么
- 面向对象过程适合处理一些简单的问题
面向对象的过程可以用把大象放进冰箱举例
面向对象的分析:
第一步:把冰箱门打开
第二步:把大象放进冰箱
第三步:把冰箱门关上
面向对象思想
- 面向独享是用分类的思维模式,思考解决问题需要哪些分类,然后对这些分类进行单独的思考。最后,才对分类的某个细节进行面向过程的探索
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题
还是以把大象放进冰箱举例
面向对象的分析过程:
第一步:把动作的实体抽象出来,主体,有人,冰箱,大象
第二步:定义主体,为主题添加对应的功能和属性
人,需要有打开,关闭冰箱的功能,以及放大象进冰箱的功能
冰箱,需要有开门,关门的属性
大象,需要有能放进入冰箱的功能
- 面向对象的本质就是:以类的方式组织代码,以对象的组织(封装)数据
- 抽象
- 三大特性:封装
继承
多态
创建与初始化对象
使用new关键字创建对象
- 使用new关键字创建对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认化的初始值以及对类中构造器的调用
代码示例:类中只能有属性和方法- package com.oop.Demo02;
- //学生类
- public class Student {
- //属性:字段
- String name;
- int age;
- //方法
- //this代表当前的类,用于本类的方法中使用本类的属性
- public void study(){
- System.out.println(this.name+"在学习");
- }
- }
复制代码 我们在定义了类之后,要在main方法中去调用,这时候,我们就应该创建一个测试类,或者应用类,这个类用来调用这个项目中所有类的方法和属性,一个项目应该只存在一个main方法
eg:- package com.oop.Demo02;
- //一个项目应该只存在一个main方法
- public class Test {
- public static void main(String[] args) {
- //类是抽象的,需要实例化,通过new来实例化
- //类实例化后会返回自己的对象
- //student对象就是一个Student类的具体实例
- Student daughter=new Student();
- daughter.name="阿尼亚";
- daughter.age=5;
- System.out.println(daughter.name);
- System.out.println(daughter.age);
- }
- }
复制代码 输出:
- 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
- 1.必须和类的名字相同
- 2.必须没有返回类型,也不能写void
接下来我们看一下关于构造器
我们首先随便定义一个动物类Animal
Animal.java:然后在测试中实例化这个类,运行一下看
Application.java:- public class Application {
- public static void main(String[] args) {
- //new 实例化了一个对象
- Animal animal=new Animal();
- }
- }
复制代码 可以看出我们在上面的Animal类中是什么都没写的,然而实例化看一下class文件可以看出
Animal.class:- package com.oop.Demo02;
- public class Animal {
- public Animal() {
- }
- }
复制代码 可以看出在class中已经生成了一个class文件
一个类中即使什么都不写,也会存在一个方法
而我们看一下无参构造和有参构造
上述,自动生成的方法就是一个无参构造方法,我们自己写一下看,
无参构造:- public class Animal {
- //属性 name
- String name;
- //无参构造
- public Animal() {
- }
- }
复制代码 调用一下无参构造的方法:- public class Application {
- public static void main(String[] args) {
- //new 实例化了一个对象
- Animal animal=new Animal();
- animal.name="bangde";
- System.out.println(animal.name);
- }
- }
复制代码 输出:即使我们不加这个无参构造,输出也能得到自己想要的,因为上文说过编译器会自动生成一个午餐的构造方法。
有参构造:- public class Animal {
- //属性 name
- String name;
- //有参构造
- public Animal(String name) {
- this.name = name;
- }
- }
复制代码 加有参构造之后,我们可以看到,刚才实例化的对象,已经开始报错了!
插入图片:

那是因为,我们创建了有参构造方法之后,编译器便不会为我们生成无参的构造方法了,这时如果我们还想要有无参的构造方法,需要自己再写一个无参的构造方法!- public class Animal {
- //属性 name
- String name;
- // 无参构造
- public Animal() {
- }
- public Animal(String name) {
- this.name = name;
- }
- }
复制代码 这是程序可以正常运行,那如果我们想调用无参的构造方法,只需,给方法传入对应的参数即可!- public class Application {
- public static void main(String[] args) {
- //new 实例化了一个对象
- Animal animal=new Animal();
- animal.name="邦德";
- System.out.println(animal.name);
- Animal animal2=new Animal("汪汪");
- System.out.println(animal2.name);
- }
- }
复制代码 当然,我们再idea中,也是有快捷键去生成有参和无参的构造方法的快捷键的。
当在类中定义过属性之后
只需,按住ALT+INSERT键,点击Constructor,然后选中想要创建有参构造方法的属性即可生成有参的构造方法,如果方法中想包含多个属性,按住ctrl键,然后点击多个即可!


如果想生成无参的构造方法,点击过Construcor之后点击select None即可
插入图片:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |