JAVA-面向对象&构造方法

265 阅读5分钟

大家好,我是java菜鸟苏红乙.今天想说一下什么是面向对象以及构造方法,说的不好还请多多指正.


1.面向对象

1.什么是面向对象

面向对象是一种程序的设计思想,它既不是一种方法,也不是一种准则,而是指导我们从现实世界存在的事物出发,进行程序设计.

这样说好像就跟没说一样,那就换一种说法,我们把它跟面向过程进行一个对比.面向过程也是一种程序设计的思路.

打个比方我们有一个要完成的任务T,我们在完成它时,我们可以把它分解成一个一个的小任务T1,T2,T3...然后这样一步一步地解决,这样的完成方式就是面向过.而面向对象的解决思路是先把任务中会出现的事物独立出来,然后通过它们的相互联系完成任务,既把整个任务中出现的事物A,B,C...独立出来,然后针对不同的事物分配不同的任务.

面向过程的思路自然,但是当任务比较大且复杂时,一旦我们分解的某个小任务出现问题,这样就会引起很大的变动,我们所要重新组织整个任务就要费很大精力.但是如果把整件任务中出现的事物独立出来后,就算哪个事物出现问题,我们也只需要修改分配给这个事物的任务即可.

2.什么是类

类是客观事物的抽象,或者说是对现实生活中事物的一种描述(属性和行为).就比如"汽车"就是一个抽象的概念,这就是一个类,"汽车"类的属性有四个轮子,带个壳带个底盘等.还有"人"也是一个类,我们用"人"这个抽象的概念来表示我们这个群体.

3.什么是对象

对象就是客观存在的事物.在java中,万事万物皆对象.就好比汽车制造厂,汽车制造厂是制造"汽车"的,这个"汽车"还只是存在于概念中,这只是类.当汽车从生产线上下来跑起来,这才是一辆汽车,是一个实际存在的事物,是一个对象.

4.面向对象与面向过程的区别

都是一种思想,思维方式

面向过程: "我应该如何完成?"然后一步一步实现就可以了

面向对象: "我应该招谁来完成?" 关注的就是对象,而不关注实现过程

面向对象依托于面向过程

5.面向对象的优点

  1. 可以将复杂的问题简单化
  2. 面向对象更贴合与管理者,面向过程更贴合与执行者
  3. 面向对象思维方式更符合现实生活人们的思维方式

6.在一个java程序中如何定义一个类

一个类的定义格式如下:

修饰符 类名{
    成员变量;//不被static关键字修饰的方法叫成员方法,成员变量可以只声明不赋值
    成员方法;//不被static关键字修饰的方法叫成员方法
}

例:

class Student{
    String name;//成员变量
    int age;//成员变量
    //成员方法
    public void read(){
        System.out.println("床前明月光");
    }
}

7.对象的创建

在定义完一个类之后我们就可以对它进行实例化,创建对象.创建对象的例子如下:

class Student{
    String name;//成员变量
    int age;//成员变量
    //构造方法
    public Student(String sname,int sage){
        name=sname;
        age=sage;
    }
    //成员方法
    public void read(){
        System.out.println("床前明月光");
    }
}
//公共类
public class Test{
    //主方法
    public static void main(String []args){
        //创建对象
        Student stu=new Student();//左边为声明,右边为创建
        //赋值
        stu.name="苏红乙";
        stu.age=22;
        
        stu.read();
    }
}

从上面的例子可以看出,通过new关键字可以创建一个新的对象.其中new关键字创建对象的过程如下:

  1. 在堆中为对象开辟空间,成员属性跟随对象进入到堆内存中,并赋默认值

  2. 调用这个类的构造器为对象初始化信息 (第一次赋值就叫做初始化,就成员属性)

  3. 将地址返回给引用

2.构造方法

上面说了,在定义类是类中的成员变量可以只声明不赋值.在创建对象后,对成员变量的赋值可以直接赋值,就像

stu.name="苏红乙";

这样.也可以使用构造方法进行对成员变量进行初始化.

1.构造方法的定义

构造方法的定义格式如下:

class Demo{
    //构造方法
    修饰符 Demo(参数列表){
		构造器....
	}
}
  1. 构造方法没有返回值,它只是用来为对象初始化信息的,所以不用写返回值类型,连void也不需要;

  2. 方法名必须与类名一致;

  3. 不能和static,final,abstract一起使用;

  4. 如果没有自定义的为类定义构造方法,编译器就会为类默认提供一个无参构造方法,如果自定义了构造方法,那么编译器就不会再提供默认的无参构造方法.

  5. 构造方法的使用---->跟随new关键字,就比如:

    Student stu=new Student("苏红乙",22);

2.构造方法的重载

构造方法只不过是一种特殊点的方法,也可以重载.

例如:

class Student{
    String name;//成员变量
    int age;//成员变量
    //构造方法
    public Student(){
        System.out.println("我是无参构造方法");
    }
    //两参构造方法
    public Student(String sname,int sage){
        name=sname;
        age=sage;
        System.out.println("我是两参构造方法");
    }
    //成员方法
    public void read(){
        System.out.println("床前明月光");
    }
}
//公共类
public class Test{
    //主方法
    public static void main(String []args){
        //创建对象
        Student stu=new Student();//左边为声明,右边为创建
        //赋值
        stu.name="苏红乙";
        stu.age=22;
        
        stu.read();
    }
}