面向对象基础——static关键字和代码块的使用
具体内容
使用static声明属性
- class Person{ // 定义Person类
- String name ; // 定义name属性,暂时不封装
- int age ; // 定义age属性,暂时不封装
- String country = "A城" ; // 定义城市属性,有默认值
- public Person(String name,int age){
- this.name = name ;
- this.age = age;
- }
- public void info(){ // 得到信息
- System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",城市:" + country) ;
- }
- };
- public class StaticDemo01{
- public static void main(String args[]){
- Person p1 = new Person("张三",30) ; // 实例化对象
- Person p2 = new Person("李四",31) ; // 实例化对象
- Person p3 = new Person("王五",32) ; // 实例化对象
- p1.info() ;
- p2.info() ;
- p3.info() ;
- }
- };
- class Person{ // 定义Person类
- String name ; // 定义name属性,暂时不封装
- int age ; // 定义age属性,暂时不封装
- static String country = "A城" ; // 定义城市属性,有默认值,static
- public Person(String name,int age){
- this.name = name ;
- this.age = age;
- }
- public void info(){ // 得到信息
- System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",城市:" + country) ;
- }
- };
- public class StaticDemo02{
- public static void main(String args[]){
- Person p1 = new Person("张三",30) ; // 实例化对象
- Person p2 = new Person("李四",31) ; // 实例化对象
- Person p3 = new Person("王五",32) ; // 实例化对象
- System.out.println("--------------- 修改之前 -------------") ;
- p1.info() ;
- p2.info() ;
- p3.info() ;
- p1.country = "B城" ; // 修改static属性
- System.out.println("--------------- 修改之后 -------------") ;
- p1.info() ;
- p2.info() ;
- p3.info() ;
- }
- };
使用static声明方法
- class Person{ // 定义Person类
- private String name ; // 定义name属性,暂时不封装
- private int age ; // 定义age属性,暂时不封装
- private static String country = "A城" ; // 定义城市属性,有默认值,static
- public static void setCountry(String c){ // 此方法可以直接由类名称调用
- country = c ;
- }
- public static String getCountry(){
- return country ;
- }
- public Person(String name,int age){
- this.name = name ;
- this.age = age;
- }
- public void info(){ // 得到信息
- System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",城市:" + country) ;
- }
- };
- public class StaticDemo04{
- public static void main(String args[]){
- Person p1 = new Person("张三",30) ; // 实例化对象
- Person p2 = new Person("李四",31) ; // 实例化对象
- Person p3 = new Person("王五",32) ; // 实例化对象
- System.out.println("--------------- 修改之前 -------------") ;
- p1.info() ;
- p2.info() ;
- p3.info() ;
- Person.setCountry("B城") ; // 调用静态方法修改static属性的内容
- System.out.println("--------------- 修改之后 -------------") ;
- p1.info() ;
- p2.info() ;
- p3.info() ;
- }
- };
- class Person{ // 定义Person类
- private static String country = "A城" ; // 定义静态属性
- private String name = "Hello" ;
- public static void sFun(String c){
- System.out.println("name = " + name) ; // 错误,不能调用非static属性
- fun() ; // 错误,不能调用非static方法
- }
- public void fun(){
- System.out.println("World") ;
- }
- };
因为static的属性或方法可以在对象没有实例化的时候就直接可以进行调用了,而非static属性必须在对象实例化之后才可以调用。
static应用一:统计一个类到底产生了多少个对象。
- class Demo{ // 定义Person类
- private static int count = 0 ; // 所有对象共享此属性
- public Demo(){
- count++ ; // 只要有对象产生就应该自增
- System.out.println("产生了" + count + "个对象!") ;
- }
- };
- public class StaticDemo06{
- public static void main(String args[]){
- new Demo() ; // 增加新对象
- new Demo() ; // 增加新对象
- new Demo() ; // 增加新对象
- }
- };
static应用实例二:可以使用static对对象进行自动的编名操作
- class Demo{ // 定义Person类
- private String name ; // 保存名字
- private static int count = 0 ; // 所有对象共享此属性
- public Demo(){
- count++ ; // 有对象产生就自增
- this.name = "DEMO-" + count ; // 自动进行编名操作
- }
- public Demo(String name){
- this.name = name; // 可以通过构造赋值
- }
- public String getName(){ // 取得姓名
- return this.name ;
- }
- };
- public class StaticDemo07{
- public static void main(String args[]){
- System.out.println(new Demo().getName()) ;
- System.out.println(new Demo("LXH").getName()) ;
- System.out.println(new Demo().getName()) ;
- System.out.println(new Demo("MLDN").getName()) ;
- System.out.println(new Demo().getName()) ;
- }
- };
代码块
- public class CodeDemo01{
- public static void main(String args[]){
- { // 普通代码块
- int x = 30 ; // 就属于一个局部变量
- System.out.println("普通代码块 --> x = " + x) ;
- }
- int x = 100 ; // 与局部变量名称相同
- System.out.println("代码块之外 --> x = " + x) ;
- }
- };
- class Demo{
- { // 直接在类中编写代码块,称为构造块
- System.out.println("1、构造块。") ;
- }
- public Demo(){ // 定义构造方法
- System.out.println("2、构造方法。") ;
- }
- };
- public class CodeDemo02{
- public static void main(String args[]){
- new Demo() ; // 实例化对象
- new Demo() ; // 实例化对象
- new Demo() ; // 实例化对象
- }
- };
- class Demo{
- { // 直接在类中编写代码块,称为构造块
- System.out.println("1、构造块。") ;
- }
- static{ // 使用static,称为静态代码块
- System.out.println("0、静态代码块") ;
- }
- public Demo(){ // 定义构造方法
- System.out.println("2、构造方法。") ;
- }
- };
- public class CodeDemo03{
- static{ // 在主方法所在的类中定义静态块
- System.out.println("在主方法所在类中定义的代码块") ;
- }
- public static void main(String args[]){
- new Demo() ; // 实例化对象
- new Demo() ; // 实例化对象
- new Demo() ; // 实例化对象
- }
- };
- public class CodeDemo04{
- static{
- System.out.println("Hello World!!!") ;
- System.exit(1) ; // 程序退出
- }
- };
面向对象基础——static关键字和代码块的使用相关推荐
- static关键字与代码块
文章目录 static关键字与代码块 一.static关键字 1.静态属性 2.静态方法 二.代码块 1.普通代码块 2.构造代码块 3.静态代码块 static关键字与代码块 一.static关键字 ...
- java 静态代码块 作用域_java static关键字和代码块
static关键字 为什么需要学习static关键字? 针对某一个变量属于类而不属于某一个具体的对象的时候,我们可以考虑使用static关键字 static概述: 多个对象共享同一份数据 static ...
- 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符
11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包&修饰符 第11天 综合练习 今日内容介绍 综合练习 ...
- 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- 【职坐标】java面向对象前言——static关键字
Java面向对象前言 -- static关键字详解 一. Static关键字的概念 static为"全局"或者"静态"的意思,用来修饰成员变量(类的属 ...
- 夯实Java基础(八)——代码块
在Java中代码块指的是使用"{}"括起来的代码称为代码块.代码块一共分为4种:局部代码块,静态代码块,同步代码块,构造代码块. 1.局部代码块 局部代码块就是定义在方法体内部的代 ...
- Java面向对象(17)--类代码块
静态代码块:用static 修饰的代码块 ①可以有输出语句. ②可以对类的属性.类的声明进行初始化操作. ③不可以对非静态的属性初始化,即:不可以调用非静态的属性和方法. ④ 静态代码块随着类的加载而 ...
- java基础2:this、static、final、abstract关键字、代码块、生成API工具包、继承、多态、方法重载和重写,抽象类、接口、常见异常、java权限修饰符、选择排序思想和程序和内部类
1.this关键字 this表示当前类对象的地址空间值的引用.就是说,this代表了new出来的对象 其最大作用就是解决了构造器中局部变量隐藏成员变量.即用this.变量名 = 变量名 区分. 2.s ...
- Java基础-static 关键字解析
参考文章: https://www.cnblogs.com/dolphin0520/p/3799052.html static的应用: 1.static是为了在没有创建任何对象的前提下,仅仅通过类本身 ...
最新文章
- gvim plugin管理
- [Unity3D]Unity3D连衣裙实现游戏开发系统
- 轻量级WEB开发框架flask
- 中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...
- Object类的hashCode()方法
- 分布式锁防止订单重复提交_防止表单重复提交看这里!!!
- 深入浅出 Java 8 Lambda 表达式
- 《剑指offer》-合并两个排序的链表
- Git笔记(24) 维护项目
- 随机取出若干条记录的SQL语句
- .Net学习笔记----2015-06-24(Hashtable 键值对集合)
- 轻松掌柜显示不能连接到服务器,轻松掌柜推出在线进销存云端版
- 计算机串口故障,电脑故障:主板串口接口故障的维修方法总结
- Photoshop设置图片的背景色为透明
- 业界 | 数据科学家要先学逻辑回归?图样图森破!
- 0ctf_2017_babyheap详解
- 【Java学习】-----基础(6)
- easyui中combobox级联问题
- 拼多多校招算法题迷宫寻路
- 文本分类模型学习笔记