Java : 类与对象(一)

Java:类与对象(二)

类与对象

关于类与对象,有下面一些话需要理解

  • 对象=属性+方法,对象拥有一些属性,可以对对象进行一些操作(方法)

  • 类是对对象内容、方法的声明、定义及初始化

  • 类是创建对象的模板

  • 对象变量是对象的管理者,而不是所有者

  • 写在类里的成员变量,仅仅只是声明,变量不在类里,变量在每一个对象里


  • 成员变量
    成员变量与本地变量十分相似
    成员变量的生存期是对象的生存期,作用域是类内部的成员函数。
    成员变量会自动初始化为“零”值,比如 类型为 boolean 时,初始化为false,如果是一个对象变量则初始化为null。

  • 方法(函数)
    在类中进行定义,属于该类的对象可以根据定义来使用这样的方法,这些方法作用于调用他的对象

  • 构造函数
    构造函数没有返回类型
    成员函数的名字和类的名字完全相同,那么在创建这个类的对象时会自动调用这个函数,在初始化完成员变量后(这保证了我们可以在构造函数中初始化成员变量)
    构造函数也确确实实是一个函数,可使用重载特性


对象

制造对象,即将类中的声明实体化
类是制造对象的模板
对象可以调用所在类中的方法


实例

import java.lang.*;
import java.util.*;

class student {
    public String name;
    public int[] score = new int[5];
    public String stunum;

    public void setName(String name) {
        this.name = name;
    }//此处this.表示该变量"name"是对象中的name变量,而后面
     //一个"name"则是方法的参数"name"

    public void setStunum(String stunum) {
        this.stunum = stunum;
    }

    public void print() {
        System.out.print(name);
        for (int k : score) {
            System.out.print(k);
        }
        System.out.println(stunum);
    }
  //构造函数 当我们制造一个对象时可以调用 class  obj = new class()
    student() {
        for (int i = 0; i < 5; i++) {
            score[i]=i;
        }
    }

    student(int a){
        this();//调用student()
        score[0]=a;
    }//函数重载
     //本例中根据制造对象时所传参数选择执行哪个构造函数

    student(char a){
        this(5);//调用student(int a)
        score[0]=a;
    }
//构造函数因为与类同名,相当于没有自己的名字,构造函数
//重载时可且仅可在第一句通过this();根据参数调用其他
//构造函数
}

public class Main {
    public static void main(String[] args) {
        String a="abc";
        student stu1 =  new student();
        stu1.setName("王等闲");
        stu1.print();
        student stu2 = new student(5);
        stu2.print();
        student stu3 = new student(a);
        stu3.print();
        stu3.name=stu3.name.toUpperCase();
        stu3.print();
    }
}
//输出为    
王等闲01234null
null51234null
abc51234null
ABC51234null

封装

封装:把属性和方法(对属性的操作)放在一起组成类,并且用这些操作把属性掩盖起来,封装是面向对象的基本概念之一

封装

保证在类的设计的时候做到封装:

  • 所有的成员变量必须是private的,这样就避免别人任意使用你的内部数据;
  • 所有public的函数,只是用来实现这个类的对象或类自己要提供的服务的,而不是用来直接访问数据。除非对数据的访问就是这个类及对象的服务。简单地说,给每个成员变量提供一对用于读写的get/set函数也是不合适的设计。

理解OOP特性:

  • 一切都是对象
  • 程序就是相互发送消息的对象的集合
  • 每个对象都有自己的存储空间,里面是其他对象
  • 每个对象都有一个类型
  • 所有属于某个特定类型的对象可以使用相同的方法

2018/5/29

原文地址:https://www.cnblogs.com/kafm/p/12721865.html