Java 类、对象和构造器

       面向过程(Procedure Oriented,简称PO)是一种以过程为中心的编程思想,该思想是站在过程的角度思考问题,强调的就是功能行为,功能的执行过程,即先干啥,后干啥。而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现,使用的时候依次调用函数就可以了。

       面向过程最大的问题在于随着系统的膨胀,面向过程将无法应付,最终导致系统的崩溃。为了解决这一种软件危机,我们提出面向对象思想。

       面向对象(Object Oriented,简称OO):是一种以事物为中心的编程思想,该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

       面向对象更加符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。

       面向对象一种基于面向过程的新的编程思想。

       面向对象的三大特征封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

 

一、类和对象

       面向对象最小的程序单元是类

1、抽象与对象

     抽象:从某种角度出发,抽取我们所关注的特征和行为。

     对象(object)也称为实例(instance):具备某种功能(状态和行为)的实体,一切事物都可以认为是对象。

对象具有状态和行为:

     对象具有状态,比如姓名,年龄,性别等。

     对象还有行为,比如吃饭,睡觉,写代码等。  

2、类(类型)      

     具有相同特性(数据元素)和行为(功能)的多个对象的抽象就是类。因此,对象的抽象是类,类的实例化是对象,类实际上就是一种数据类型。

     类具有特性:对象的状态,用成员变量来描述。

     类具有功能:对象的行为,用方法来描述。

在编程中,是先有类,再有对象。对象是根据类创建出来的,类是对象的类型/模板,就是使用一个类作为构建该对象的基础。

// 类的定义语法
修饰符 class 类名{
  零到多个成员变量(field )
  零到多个构造器
  零到多个方法
}

注意:

     1)修饰符可以是 public、final、abstract,或者完全省略。若类使用 public 修饰,则当前所在的文件名必须和类名相同。

     2)类名必须符合标识符的命名规范(使用名词,首字母大写)。

3、类的定义和对象的创建与使用

    1)对象的创建与使用

创建对象:类 对象名 = new 类名();

对象调用方法:对象名.方法名([实参]);

对象操作字段:赋值:对象名.变量 = 值; 取值:变量 = 对象名.变量;

打印对象:默认输出:Servant@670e0bfd,对象的类型@十六进制的hashCode。   比较对象:每次new,都会在堆内存开辟新的内存空间,而"=="号在比较引用类型的时候,比较的是引用类型的内存地址值。         

对象的生命周期:

       从使用new在堆中开辟内存开始,到垃圾回收期回收之间,垃圾:内存中的某一块空间没有被某一个变量所引用,垃圾产生时,不一定运行GC,GC是自行调度,程序员控制不了。

    2)创建一个 Student 类

public class Student {
    String name;
    int age;

    public void eat(){
        System.out.println("在吃饭");
    }

    public static void main(String[] args) {
        Student stu = new Student();
        System.out.println(stu.name);  // null
        stu.eat();  // 在吃饭
    }
}

 

二、构造器    

     Student stu = new Student();  其实我们在创建对象的时候,都是调用构造方法/构造函数/构造器。

      构造器最大的作用:就是在创建对象时并进行初始化对象数据

1、构造器的特点

    类都有一个默认构造器,当不显示的定义构造器时,编译器会在编译的时候,提供一个默认构造器。

    1)构造器的名字必须和当前所在类的类名相同.

    2)不需要定义返回值类型,更加不能使用void作为返回.

    3)构造器中不需要使用return来返回当前构造的对象.

2、默认构造器

     1)无参数,无方法体.

     2)构造器的访问修饰符和当前类的修饰符相同(是否有public).

     3)一旦在类中显示地提供了构造器,则默认的构造器就不再提供了.

     推论: 一个类至少有一个构造器(即使没有自定义,编译器也会创建一个默认的).

3、构造器重载

          不同类的构造器是不相同的. 对于构造器重载来说,肯定是在同一个类中,并且构造器都是和类名相同.

          所以在同一个类中的多个构造器就必须参数列表不同(参数类型,参数个数,参数顺序).

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void eat(){
        System.out.println("在吃饭");
    }

    public static void main(String[] args) {
        Student stu = new Student();
        System.out.println(stu.name + "--" + stu.age); //null--0
        Student stu2 = new Student("李四",17);
        System.out.println(stu2.name + "--" + stu2.age); //李四--17
    }
}

 

ends ~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值