韩菜菜 发表于 2020-3-24 19:28:45

java代码 有语句没看懂

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("考试");
}
}






这段程序怎么理解static student s=new student(); 还有Test.s.exam(),那个大佬能把整个程序运行过程讲一下也可以 谢谢。我不知道哪个知识点模糊了。。

入门者 发表于 2020-3-25 22:46:03

本帖最后由 入门者 于 2020-3-25 22:47 编辑

new student()是student这个类的实例对象,s这个引用指向了它,同时s是静态的,也就是test类的类属性,可以通过test类名直接使用s;.exam是new的对象调用的;
另外类名每个词的首字母要大写,这是规范.

懂?

stars-one 发表于 2020-4-4 16:33:49

emm,就是类和方法那一章吧..太简单都不知道怎么说了..

Mr.Newbe 发表于 2020-4-4 18:58:43

本帖最后由 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喂食

综上,说了一大堆,这些是我对于面向对象的理解,希望对楼主的学习有所帮助,加油吧!

韩菜菜 发表于 2020-4-4 21:43:47

Mr.Newbe 发表于 2020-4-4 18:58
楼主你好!
基于你的程序代码,咱们可以学到不少东西:



谢谢兄弟你总结这么多,你也加油吧。

zwhe 发表于 2020-5-28 10:30:20

{:7_126:}
页: [1]
查看完整版本: java代码 有语句没看懂