java面向对象编程-静态字段和静态方法

静态字段
实例字段在每个实例中都有自己的一个独立“空间”,但是静态字段只有一个共享“空间”,所有实例都会共享该字段。举个例子:

public class Hello{
	public static void main(String[] args){
		Person p=new Person("sikui",25);
		p.number=200;
		Person p1=new Person("ss",23);
		p1.number=250;
		
		System.out.println(Person.number);
	}
}
class Person {
	public String name;
	public int age;
	public static int number=1000;
	public Person(String _name,int _age) {
		this.name=_name;
		this.age=_age;
	}
}

对于静态字段,无论修改哪个实例的静态字段,效果都是一样的:所有实例的静态字段都被修改了,原因是静态字段并不属于实例
**对于静态字段可以用:类名.静态字段 ,实例名.静态对象 来访问静态对象。

静态方法
静态方法内部,无法访问this变量,也无法访问实例字段,它只能访问静态字段。
静态方法属于整个类,可以使用类名.方法 ,实例名.方法
例如:

public class Hello{
	public static void main(String[] args){
		Person.play();
		Person p=new Person();
		p.play();
	}
}
class Person {
	public String name;
	public int age;
	public static int number=1000;
	public static void play(){
		System.out.println("我是静态方法"+number);
	}
}

接口静态字段
因为interface是一个纯抽象类,所以它不能定义实例字段。但是,interface是可以有静态字段的,并且静态字段必须为final类型:

public interface Person {
    public static final int MALE = 1;
    public static final int FEMALE = 2;
}

实际上,因为interface的字段只能是public static final类型,所以我们可以把这些修饰符都去掉,上述代码可以简写为:

public interface Person {
    // 编译器会自动加上public statc final:
    int MALE = 1;
    int FEMALE = 2;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab面向对象编程教程-A Guide to MATLAB Object-Oriented Programming - Register, CRC 2007.rar 最近想好好学学matlab面向对象编程的一些东西(以前也自学过,但现在想系统学一下,libsvm工具箱几乎已经没有什么可以更新的了。所以想学点新的东西,人总得往前走,多学点东西,过去的翻过去就好了。OO~)。 这一段除了在学习 matlab oop 还把 matlab并行计算的研究学习了一下。 现在想实际做点东西。呵呵~ 在网上一顿搜索,在科学网找到了一个不错的教程(当然matlab oop 的 help文件也是很好的教程) 所以分享一下 === 书籍介绍 A Guide to MATLAB Object-Oriented Programming is the first book to deliver broad coverage of the documented and undocumented object-oriented features of MATLAB®. Unlike the typical approach of other resources, this guide explains why each feature is important, demonstrates how each feature is used, and promotes an understanding of the interactions between features. Assuming an intermediate level of MATLAB programming knowledge, the book not only concentrates on MATLAB coding techniques but also discusses topics critical to general software development. It introduces fundamentals first before integrating these concepts into example applications. In the first section, the book discusses eight basic functions: constructor, subsref, subsasgn, display, struct, fieldnames, get, and set. Building on the previous section, it explores inheritance topics and presents the Class Wizard, a powerful MATLAB class generation tool. The final section delves into advanced strategies, including containers, static variables, and function fronts. With more than 20 years of experience designing and implementing object-oriented software, the expert author has developed an accessible and comprehensive book that aids readers in creating effective object-oriented software using MATLAB. MATLAB的对象指南导向程式的第一本书是提供广泛的覆盖面证件和无证件对象的MATLAB ®导向的功能。与其他资源的典型做法,本指南解释了为什么每一个功能很重要,每个功能演示如何使用,促进了功能之间的相互作用的理解。 假设MATLAB的编程知识的中级水平,这本书不仅集中在MATLAB的编码技术,并讨论重要议题一般的软件开发。它引入例如前申请纳入这些概念基本条件。在第一部分,这本书讨论了8个基本功能:构造,subsref,subsasgn,显示,结构,字段名,获得,并设置。在上一节为基础,它继承专题探讨,并提出了类向导,一个强大的MATLAB的类生成工具。最后一节将深入讨论先进的战略,包括集装箱,静态变量和功能方面。 拥有超过20年的经验,制定和实施面向对象的软件,专家作者已经开发出了方便和全面的书,用MATLAB建立有效的面向对象的软件辅助读
JAVA程序设计 多人聊天室 设计目的 Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高 性能、多线程和静态的语言。本次课程设计旨在应用JAVA编程语言中的网络通信,多线 程,数据库编程,图形界面编程等技术实现一个基本的多人在线网络聊天室。并以此巩 固JAVA基础知识,体会面向对象的设计方法。 平台要求 1 使用: 搭载JAVA运行环境的平台即可。 2 开发环境: Windows10 64bit JDK Eclipse Window Builder 需求分析 管理员:启动服务器,关闭服务器,强制用户退出,聊天房间增添改查。 用户:GUI,注册,登陆,聊天等。 用例图: 概要设计 1 服务器设计 将客户端的请求抽象化,每种请求服务器都会产生一个特定的类的对象去处理它。服 务器负责接受客户端请求,根据请求内容完成指定工作。为提高效率,采用多线程结合 线程池设计技术,对于每个请求在线程池内得到一个线程去处理请求。如图3-1所示。 2 客户端设计 聊天室中一个事物的过程基本流程是:用户产生动作,客户端发送消息,服务器接收 并处理,服务器返回处理结果,GUI根据结果进行显示的更新。客户端只在GUI中采用多 线程设计。而对服务器回应的接受都是单线程的因为只有一个服务器为自己服务,且在 接收数据过程中连接是不可断开的。客户端的设计如图3- 2所示。一次事物流程中的步骤编号在图中给出。 图 4-2客户端概要图 详细设计 1 服务器详细设计 服务器要完成的任务是接受客户请求并在自己维护的数据结构上进行相应处理最终将 处理结果返回给客户端。具体涉及到多线程,数据库,网络通信几项技术,同时为了实 时根据请求产生特定类的对象使用了反例技术。 1 总体概览 服务器端的入口类为ServerMain。聊天室服务器端代码可分为以下八个部分。除最后 两个部分外其他部分为串行执行。在接听后,创建的线程会并发处理客户请求。由于各 个处理并发的特点,使得服务器的响应不会应为某个而用户阻塞,提高了效率。 图 5-1聊天室服务器代码布局 服务器将用户操作抽象为不同的工作类,在接收到请求后根据消息协议在当前实现的 工作类名列表中找到类名(通过下标在CommandList类中的List<String> commandsList属性中得到),通过反例技术直接生成类的对象。各个类对象负责具体工 作,他们都继承ServerWorkClass。而ServerWorkClass继承自WorlClass因为客户端对服 务器的回复也应当有特定的类去处理它。目前实现的类有以下五种。当要添加新功能时 只需向commandsList属性静态添加索引。进一步,也可在以后加入新的机制实现动态添 加功能。 表 5-2工作类名及其工作内容 "类名 "服务器端动作 " "HouseRelative "处理用户的进入、离开房间请求" "Login "处理用户的上线、下线请求 " "Messages "处理用户的消息发送请求 " "UserDelAdd "处理用户注册请求 " "UserInfo "处理用户的用户信息查询设置请" " "求 " 服务器中涉及到的类图如下所示: 2 协议约定及实现 由于要考虑客户端的各个请求需要完成不同的操作,需要根据数据来内容来做特定的 工作,本聊天室将通信协议定义如下: userID:服务器通过此ID确定消息是由哪个用户发出的。 authorization code:服务器对用户身份进行认证的域,每次在接受用户请求后都会更新一个随机数, 并且将内容返回,而用户在请求服务器时必须使用最新的验证码否则不会得到服务器响 应。这防止了非法用户的不正当操作。 command:表示用户的请求类型其值为具体操作的工作类在commandsList中的下标, 服务器通过此下标找到类名产生类的对象。到这里为止的工作都是由一个CommandHandl er的类的对象来完成,它实现了Runnable接口,在Accepter类的对象接受到消息后产生 一个线程来执行对消息的下一步处理,其主要工作就是通过WorkingClassFactory使用反 例技术产生具体工作类,之后调用工作类的doJob()方法完成任务。 command2:一个具体工作类是对一类操作的抽象,如与房间相关的操作可能包括进房 间和出房间,而具体内容就是根据command2来标示的。从这里开始的工作已经进入到了 WorkingClass的代码区域。 result:是服务器向客户端告知请求是否正常完成的字段。 之后就是具体消息的定义区域。首先一个MessageAmount来表示消息个数,而之后每 条消息都有一个int域来表示其长度。为了支持中文,采用字符数组而不是字节数组。 服务器和客户端都将协议
1、学生类的创建和使用 ○1创建一个Student类,包括的域有学号,姓名,性别和年龄,另外增加一个统计学生人数的静态域count; ○2在Student类建立构造方法初始化各域的值,并统计学生人数count; ○3创建分别获得各域(学号,姓名,性别和年龄)的public方法,以及分别设置各域(学号,姓名,性别和年龄)值的public方法(即get、set方法);另外还要创建获取静态域count值的get方法; ○4创建public型的toString方法,把该类的各域信息(学号,姓名,性别和年龄)组合成一个字符串,如:“141308008,小明,男,20岁”; ○5创建Student类的子类CollegeStudent类(大学生类),添加域:专业,静态域count统计大学生人数,建立构造方法并于其中统计大学生人数,并相应添加专业的get、set方法,获取静态域count值的get方法,重写toString方法(把专业信息加进去); ○6创建包含主方法的主类,并在主方法测试Student类与CollegeStudent类:创建Student类的两个对象;输出目前的Student类对象的人数;分别显示对象的各域信息(学号,姓名,性别和年龄;使用toString方法);修改某个对象的姓名和年龄,然后再显示这个对象的姓名和年龄;比较两个对象的年龄大小,输出年龄较大者的对象的所有域信息(toString方法)。创建CollegeStudent类的一个对象;输出目前的CollegeStudent类对象的人数;修改对象的姓名、年龄和专业;然后再显示这个对象的全部信息(调用toString方法,或在println方法中直接输出使其自动调用toString方法)。 注:以上类中所有域都是private类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值