1.什么是类变量?

类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。

如何定义类变量?

定义语法:

    访问修饰符 static 数据类型 变量名;

如何访问类变量?

    类名.类变量名 或者 对象名.类变量名

案例:有一群小孩玩堆雪人,不时有新的小朋友加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决。

public class Demo113{
public static void main(String []args){
/*非面向对象方法
int total=0;
Child ch1=new Child(3,"妞妞");
ch1.joinGame();
total++;
Child ch2=new Child(4,"小小");
ch2.joinGame();
total++;
*/
//面向对象办法
Child ch1=new Child(3,"小龙");
ch1.joinGame();
Child ch2=new Child(4,"刚子");
ch2.joinGame();
Child ch3=new Child(5,"康康");
ch3.joinGame();
System.out.println("共有="+Child.total);
}
} //定义小孩类
class Child{
int age;
String name;
//total是静态变量,因此它可以被任何一个对象访问
static int total=0;
public Child(int age,String name){
this.age=age;
this.name=name;
}
public void joinGame(){
total++;
System.out.println("有一个小孩加入了");
}
}

2.什么是类方法,为什么有类方法?

类方法是属于所有对象实例的,其形式如下:

访问修饰符 static 数据返回类型 方法名(){}

注意:类方法中不能访问非静态变量(类变量)。

使用:

类名.类方法名 或者 对象名.类方法名

static静态的方法可以访问static静态变量,不能访问非静态变量(类变量),非静态方法可以访问非静态变量(类变量),同时也可以访问static静态变量。

案例:统计总学费的程序代码,加深static静态的方法由静态变量的访问[Demo115.java]

public class Demo115{
public static void main(String []args){
//创建一个学生
Stu stu1=new Stu(29,"aa",340);
Stu stu2=new Stu(29,"aa",240);
System.out.println(Stu.getTotalFee());
}
} //学生类
class Stu{
int age;
String name;
int fee;
static int totalFee;
public Stu(int age,String name,int fee){
this.age=age;
this.name=name;
totalFee+=fee;
}
//返回总学费[这是一个类方法(静态方法)]
//java中规则:类变量原则上用类方法去访问或操作
public static int getTotalFee(){
return totalFee;
}
}

3.其他问题

1、什么时候需要用类变量

如案例[Demo115.java]:定义学生类,统计学生共交多少钱?用类变量,表示公共的属性

2、类变量与成员变量区别:

a.加上static称为类变量或静态变量,否则称为成员变量

b.类变量是与类相关的,属于公共的属性

c.成员变量属于每个对象个体的属性

d.类变量可以通过 [类名.类变量名] 直接访问

3、什么时候需要用类方法

如案例[Demo115.java]:定义学生类,统计学生共交多少钱?

4、类方法与类变量区别:

a.类方法属于与类相关的,属于公共的方法

b.成员方法属于每个对象个体的方法

c.类方法可以通过 [类名.类方法名] 直接访问

java面向对象编程(四)--类变量、类方法的更多相关文章

  1. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  2. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  3. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  4. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  5. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

  6. 《Java面向对象编程》

    <Java面向对象编程> 第11章 对象的生命周期 11.1  创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...

  7. Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  8. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  9. (一)如何理解java面向对象编程

    哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...

随机推荐

  1. Navicate 连接mysql问题

    mysql8.0 and Navicate11.2 链接报错问题 亲测有效:记录一下仅供提醒自己 原创: https://blog.csdn.net/xdmfc/article/details/802 ...

  2. js生成的cookie在yii2中获取不到的解决办法

    在js中创建的cookie,默认用yii2中自带的方法Yii::$app->request->cookies->get('abc')获取不到,而用$_COOKIE['abc']又是能 ...

  3. Android一个工程引用另一个工程的方法

    一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个And ...

  4. while(scanf("%d %d",&a,&b)!=EOF)

    scanf("%d %d",&a,&b)返回输入的数据和格式字符串中匹配次数.当dos或windows中输入ctrl+z(模拟文件结束符EOF)时,scanf返回E ...

  5. 剑指offer(24)二叉树中和为某一值的路径

    题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 题目分析 这题基本上一看就知道应该深度遍历整个树, ...

  6. Vue父子组件传值 | 父传子 | 子传父

    父传子 父容器 <template> <div> <zdy :module='test'></zdy> </div> </templa ...

  7. Hadoop之简单文件读写

    文件简单写操作: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream ...

  8. selenium + firefox驱动版本对应。

    1)selenium 2.51.0====firefox 46 selenium 3.11.0 ====firefox 56 后来发现最新的火狐浏览器好多插件都不能用了.所以果断回到46.对应的2.5 ...

  9. 整合MyBatis(springboot)

    pom文件: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>m ...

  10. 网络(socket)编程

    一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系: ...