Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在祝方法调用,后者必须先实例化后用实例调用)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在祝方法调用,后者必须先实例化后用实例调用)相关的知识,希望对你有一定的参考价值。
1 package lsg.ap.april4th2; 2 /* 3 知识点:1.Getter and Setter 的应用 4 2.局部变量与成员变量(也可叫做全局变量) 5 3.Static关键字的用法 6 a.成员变量被static修饰后的所有类的共享属性 7 b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化 8 4.This关键字的用法 9 this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。 10 11 注意:谁调用这个方法,在该方法内部的this就代表谁。 12 13 this的场景: 14 解决局部变量隐藏成员变量 15 */ 16 //定义学生类 17 class Person 18 { 19 //姓名 20 private String name="刘德华"; 21 //年龄 22 private int age=45; 23 //所有对象共享的属性用static修饰,可以直接被类名直接调用 24 static String country = "中国"; 25 26 //姓名获取值 27 public String getName() 28 { 29 return name; 30 } 31 32 //姓名设置值 33 public void setName(String name) 34 { //name = "林青霞"; 35 //name = name; //变量的使用规则:就近原则 36 //这里是类名,目前还没有说过类似的用法,所以这个是有问题的 37 //这里的调用只能通过对象名 38 //这个对象如果存在,它应该代表的是Student的一个对象。 39 //那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this 40 //Student.name = name; 41 this.name = name; 42 } 43 44 //年龄获取值 45 public int getAge() 46 { 47 return age; 48 } 49 50 //年龄赋值 51 public void setAge(int age) 52 { 53 this.age = age; 54 } 55 } 56 57 //测试类 58 59 public class PersonClass 60 { 61 62 public void show()//定义非静态方法,必须经过实例化后才能调用 63 64 { 65 System.out.println("哈哈"); 66 } 67 public static void show2()//但是当以静态方法后,可以直接用 类名.函数名 68 //调用,在本类内,类名可以忽略,这就是常见的public static...的由来 69 { 70 System.out.println("哈哈你妹"); 71 } 72 public static void main(String[] args) 73 { 74 //创建人对象 75 Person s1= new Person(); 76 Person s2= new Person(); 77 PersonClass s3=new PersonClass(); 78 s3.show();//不能直接写show(),因为是非静态方法,必须实例化后通过实例调用 79 show2(); 80 //给成员变量赋值 81 s1.setName("林青霞"); 82 s1.setAge(27); 83 s1.country="美国";//静态变量的值是共享的,所以以最后一次修改的为准,即全变成了日本 84 s2.country="日本";//静态属性最好用类名直接调用,要不会警告的哦 85 //Static 与Final是不同的哦,Static类似C语言的Extern,Final类似Define 86 //Static定义的变量的值仍然是可以修改的,但是Final指定在定义的时候赋值一次 87 //获取数据 88 System.out.println(s1.getName()+"---"+s1.getAge());//直接用类名.调用Name和 89 // age是绝对不可以的 90 System.out.println(s2.getName()+"---"+s2.getAge()); 91 System.out.println(s1.country);//静态属性最好不要用类的实例调用,会警告的 92 System.out.println(s2.country); 93 System.out.println(Person.country);//Person.后面只提示country, 94 //不会提示name和age哦 95 } 96 97 }
以上是关于Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在祝方法调用,后者必须先实例化后用实例调用)的主要内容,如果未能解决你的问题,请参考以下文章
java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类People类和主类 E
065Java面向对象之定义一个Book类,在主类中使用Book类
编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的
编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的(