JAVA什么是类?很简单,如果举现实中的例子,人类,动物类,植物类,这都是类,但是这些类又可以细分,哺乳动物类,卵生动物类,花类,草类等等......

这是类,那么什么是对象呢?在我理解,对象就是类的实例化,类是一种高度的抽象概括,有人类,但是这个世界是没有人的,有的只是一个个属于人类的实体对象,这就是对象,我们大家都属于人类,但其实看本质的来讲这个世界上不存在人这个东西,我们只是人类实例化出来的一个对象,听起来有点像绕口令,但,应该不是很难理解,理解了这个思维,我们就能继续向下了解JAVA里的对象和类。

# 类

上文说到类是一种高度抽象的概括,所以当我们在初学JAVA时,首先就要知道一个类有哪些部分,在java中,类可以粗略的分为两部分:1.属性 2.方法,(在C++中叫做数据成员和成员函数)什么是属性?对于人类来说,名字,性别,年龄,身高等等...这都是属性,是属于你的静态固有的性质,那么什么是方法,比如人可以跑,可以跳,可以说话这些都是你的方法。所以在定义一个人类的时候,要有名字,年龄等属性和跑走跳等方法......

我这里用动物举例(ps:因为动物简单)定义一个动物,首先属性我们以名字和颜色举例,

String name;//名字
String color;//颜色

然后一个类他必须要有属于自己的构造函数,因为当你实例化一个类的时候他必须有构造自己的方法,不可能凭空出现,必须要有逻辑。JAVA中构造函数的命名规范是没有返回类型,函数名和类名相同,构造函数体可以不写任何东西,称为无参构造函数,可以理解为你创建了一个什么都没有的动物,属性后期赋值,也可以有参数,称为有参构造函数,这样就可以在它被创建出来的同时就赋值

//无参构造
 Animal() {
}
//有参构造
 Animal(String name, String color) {
    this.name = name;
    this.color = color;
}

方法这里以移动举例:

 String move(){
        return this.name+"移动了";
    }

这样就是一个很简单很初级的类:
public class Animal {
    String name;//名字
    String color;//颜色
    //无参构造
     Animal() {
    }
    //有参构造
     Animal(String name, String color) {
        this.name = name;
        this.color = color;
    }

    String move(){
        return this.name+"移动了";
    }
}

# 封装

封装的优点:

  • 1. 良好的封装能够减少耦合。
  • 2. 类内部的结构可以自由修改。
  • 3. 可以对成员变量进行更精确的控制。
  • 4. 隐藏信息,实现细节。 PS:转自菜鸟教程

一个完整的类必须要做好封装,什么是封装,这里用我一位老师曾将说过的例子:比如一个电视机类,电视机实现关机开机,是通过按键实现的,但开关机的本质是电视机内部电路实现的,我们开关机却没有去直接操作电路,这样的一个电视机就是一个封装好的类,在JAVA中我们编写的一个类是可能要交给别人使用操作的,如果任何人都能随意去对你类内的属性直接进行操作,这样是很不安全的,所以你需要让使用你类的这个人去按照你给出的方法去使用,你要让他用按键操作电视而不是拿着电线和电笔拆开电视机外壳去修改电路。

所以一般情况下,一个类的属性前我们都要加一个private修饰,这表示是私有的不能直接访问加上这个修饰符之后,外部就不能直接访问他了,但是我们要让外部通过我们给好的方法去访问,所以一般方法前我们用public去修饰,这表示是公开的可以让外部直接访问

修改之后的属性和构造方法

private String name;//名字
private String color;//颜色

public Animal() {
}

public Animal(String name, String color) {
this.name = name;
this.color = color;
}

这里对于动物这个类来说,它的属性只有名字和颜色,所以我们要给别人一个操作方法,对这两个属性进行操作,对于一个数据有什么操作方法?一般简单地说有两种,修改它和得到他,因为我们要把这个属性藏起来,让外部不能直接访问他,但是又不能让他被彻底雪藏进行不了任何操作,不然你这个类没有任何意义了啊,所以还要给别人操作他的方法,就是设置和得到,一般我们把这两种方法称为getter和setter,

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

这里还涉及到一个this指针的问题,this什么意思,如果你们仔细看会发现,在set里参数名和类属性的名字是相同的,如果不加this就会出现name=name这种情况,计算机分不清哪个是哪个,所以加了this指针this表示的意思就是指向这个类,所以这句话就是类属性name=你传进来的参数name,set方法是设置值所以不需要有返回值,而get方法是获得值,所以要返回这个类型的值,所以get方法是要有返回类型的,

public class Animal {
    private String name;//名字
    private String color;//颜色

    public Animal() {
    }

    public Animal(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
    public String move(){
        return this.name+"移动了";
    }
}                  

这样就是一个简单封装好的类,这里要注意一点,很多初学者会在get方法中用输出函数,输出这个属性,但是这样不是真正意义上的得到,你只是把他输出到了屏幕上,如果计算机想获得这个属性的值还是获取不到的,除非这个方法的意义就是输出到屏幕上,这时才可以用输出函数。

#测试

写好这个类就可以再编写一个测试类,去测试这个动物类。

测试类的第一步应该是先新建一个对象,动物对象,把动物这个类实例化出一个实体的对象,以下是我的测试程序:

public class TestAnimal {
public static void main(String[] args) {//程序入口,学过C的可以理解为是int main()
//第一步新建对象,把类实例化我创建了两个对象;
Animal animal=new Animal();//此时调用了无参构造函数
Animal animal1=new Animal("张三","绿色");//此时调用了有参构造函数
System.out.println("这是有参构造函数创建出来的动物对象:");
System.out.println(animal1.getName());
//输出他的名字,如果你直接输出animal1.name编译器会报错不让你访问,因为他是私
有的,你只能通过给定的方法去访问
animal1.setName("李四");//用set方法重新设置他的名字
System.out.println("用set修改之后的名字:");
System.out.println(animal1.getName());//再次输出

System.out.println(animal1.move());//动物移动了
System.out.println("下面是无参构造函数创建出来的动物对象:");
System.out.println(animal.getName());
animal.setName("小白");
System.out.println("这是给无参构造函数构造出的对象用set方法赋值之后的名字:");
System.out.println(animal.getName());

}
}

其实如果听过我之前讲C++类和对象的会发现两者差不多

PS:

以上就是简单的说一下java中的类和对象以及封装,在类中还有其他的一些知识点比如static修饰,以及继承和多态等等,这些后续可能会更新。

上文所述仅是一个JAVA的入门基础.....以及仅代表我个人观点以及个人经验,如有错误欢迎指正,


星星温柔泛滥,人间至善