本帖最后由 Mr.Newbe 于 2020-4-4 19:01 编辑
楼主你好!
基于你的程序代码,咱们可以学到不少东西:
public class test{
static student s=new student();
public static void main(string[] args){
Test.s.exam()
}
}
class student{
public void exam(){
System.out.println("考试");
}
}
首先,要明确的一点是java是完全面向对象的,也就是说和c/c++的模式是大不相同的,但是java程序在运行时的入口和c/c++是一样的,都是从主函数开始。
另外,关于对象的定义和实例化,我举一个例子:
在我们的人类社会中,有男性和女性两种性别的人,这两周性别的人就相当于类的概念,即没有具体的实例,而是一种模式或者范式。如果某个人是男性,那么他一定是满足男性类中的属性(生物上的各种性征之类)和方法(男性的功能。。。)有点开车了哈哈哈
那现在有一个叫小明的男孩,从面向对象的思想来看,小明是男性的一个实例,可以这么写:new male("小明");
所以类就是一个有相同属性和功能(方法)的这么一个东西,对象就是类的一个具体实例,男性就是一个类,小明是男性的一个实例,一个叫小明的男性。
只有类不能运行,类只是一个模板,需要具体的实例去行使功能
再来看创建对象,如果楼主学过c/c++,就应该知道在c/c++中,定义一个变量就是在内存中开辟一块空间,java里面对象的创建也是如此,new一个对象,就是在内存中开辟一块空间,对象的属性都放在这块空间里。和c/c++里面的结构体类似。
所以这样一来,我写student s并没有真正开辟空间给s,只是知道,s是指向student型的,指向谁还不知道。所以,要结合new操作。
前面说,创建了对象,对象的属性就会放在开辟的那块空间中,这是没有考虑存在static属性的。如果有若干个static修饰的属性,那么这几个属性就不会随着对象的实例化而存在多个。
比如说,学生类中,把年龄age设置成静态属性,那么如果创建两个学生对象,这两个对象是共用这个age属性的。
静态对象,静态代码块,静态方法也是这么个道理。
最后,关于对象方法的使用,我的理解就是某人干某事。这也是面向对象语言最大的特点,接近现实世界。给你举个例子:
实现动物园饲养员喂动物喝水(老虎狮子等),咱们就可以定义一个饲养员类,若干个动物类,饲养员是人,所以人的类(区分人类哈哈)是饲养员的父类,即饲养员是具有人的共性的一种生物。他作为饲养员,肯定还需要照顾动物,喂食、喝水等,这也是他的功能(方法)。
所以,在写的时候,可以这么实现:
Keeper k1 = new Keeper("小明");
Tiger t1 = new Tiger();
Monkey m1 = new Monkey();
k1.feed(t1); // 这一句就实现了饲养员小明给老虎t1喂食
k1.feed(m1); //给猴子m1喂食
综上,说了一大堆,这些是我对于面向对象的理解,希望对楼主的学习有所帮助,加油吧!