鱼C论坛

 找回密码
 立即注册
查看: 2744|回复: 5

[已解决]java代码 有语句没看懂

[复制链接]
发表于 2020-3-24 19:28:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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-4-4 18:58:43
本帖最后由 Mr.Newbe 于 2020-4-4 19:01 编辑

楼主你好!
基于你的程序代码,咱们可以学到不少东西:

  1. public class test{
  2.         static student s=new student();
  3.         public static void main(string[] args){
  4.                 Test.s.exam()
  5. }
  6. }
  7. class student{
  8.         public void exam(){
  9.         System.out.println("考试");
  10. }
  11. }
复制代码


首先,要明确的一点是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喂食

综上,说了一大堆,这些是我对于面向对象的理解,希望对楼主的学习有所帮助,加油吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-25 22:46:03 | 显示全部楼层
本帖最后由 入门者 于 2020-3-25 22:47 编辑

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

懂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 16:33:49 | 显示全部楼层
emm,就是类和方法那一章吧..太简单都不知道怎么说了..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 18:58:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Mr.Newbe 于 2020-4-4 19:01 编辑

楼主你好!
基于你的程序代码,咱们可以学到不少东西:

  1. public class test{
  2.         static student s=new student();
  3.         public static void main(string[] args){
  4.                 Test.s.exam()
  5. }
  6. }
  7. class student{
  8.         public void exam(){
  9.         System.out.println("考试");
  10. }
  11. }
复制代码


首先,要明确的一点是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喂食

综上,说了一大堆,这些是我对于面向对象的理解,希望对楼主的学习有所帮助,加油吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-4 21:43:47 | 显示全部楼层
Mr.Newbe 发表于 2020-4-4 18:58
楼主你好!
基于你的程序代码,咱们可以学到不少东西:

谢谢兄弟你总结这么多,你也加油吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 10:30:20 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 12:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表