JavaSE---05面向对象(下)
05 面向对象(下)
5.1 关键字:static
5.1.1 概念及使用
概念
1.static:静态的。
2.static 可以用来修饰:属性、方法、代码块、内部类。3.使用 static 修饰属性:静态变量(或类变量)。3.1 属性:是否使用 static 修饰,又分为:静态属性 VS 非静态属性(实例变量)实例变量:我们创建了类的多个对象,每个对象都独立的拥有了一套类中的非静态属 性。当修改其中一个非静态属性时,不会导致其他对象中同样的属性值的修饰。静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过静态变量去修改某一个变量时,会导致其他对象调用此静态变量时,是修改过的。3.2 static 修饰属性的其他说明:① 静态变量随着类的加载而加载。可以通过"类.静态变量"的方式进行调用。② 静态变量的加载要早于对象的创建。③ 由于类只会加载一次,则静态变量在内存中也只会存在一次。存在方法区的静态域中。④ 类变量 实例变量类 yes no对象 yes yes
通俗说
一套三室一厅一厨一卫的房子出租,三间卧室相当于类的三个实例化对象,其中有各自的属性如床、柜子、桌子等,彼此之前互不干扰,而厕所和厨房就像是static所修饰的属性,是所有人共用的,一个人修改了其余人的也更改。
示例
public class StaticTest {public static void main(String[] args) {Chinese.nation = "中国";//实例化前就有了Chinese c1 = new Chinese();c1.name = "姚明";c1.age = 40;c1.nation = "CHN";Chinese c2 = new Chinese();c2.name = "马龙";c2.age = 30;c2.nation = "CHINA";System.out.println(c1.nation); //CHINA,二者共用的nation//编译不通过
// Chinese.name = "张继科"; }
}
//中国人
class Chinese{String name;int age;static String nation;
}
5.1.2 类变量的内存解析
5.1.3 static修饰方法
概念
1.使用 static 修饰方法:静态方法① 随着类的加载而加载,可以通过"类.静态方法"的方式调用② 静态方法 非静态方法类 yes no对象 yes yes③ 静态方法中,只能调用静态的方法或属性!!!非静态的方法中,可以调用所有的方法或属性
2.static 注意点:2.1 在静态的方法内,不能使用 this 关键字、super 关键字2.2 关于静态属性和静态方法的使用,从生命周期的角度去理解。3.开发中,如何确定一个属性是否需要声明 static 的?- 属性是可以被多个对象所共享的,不会随着对象的不同而不同的。- 类中的常量也常常声明为 static开发中,如何确定一个方法是否要声明为 static 的?- 操作静态属性的方法,通常设置为 static 的- 工具类中的方法,习惯上声明为 static 的。比如:Math、Arrays、Collections
5.1.4 题目示例
//static 关键字的应用
public class CircleTest {public static void main(String[] args) {Circle c1 = new Circle();Circle c2 = new Circle();Circle c3 = new Circle(3.4);System.out.println("c1 的 ID:" + c1.getId());//1001System.out.println("c2 的 ID:" + c2.getId());//1002System.out.println("c3 的 ID:" + c3.getId());//1003System.out.println("创建圆的个数: " + Circle.getTotal());//3}
}class Circle{private double radius;private int id; //需要自动赋值public Circle(){id = init++;total++;}public Circle(double radius){this();this.radius = radius;}private static int total;//记录创建圆的个数private static int init = 1001;//static 声明的属性被所有对象所共享public double findArea(){return 3.14 * radius * radius;}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public int getId() {return id;}public static int getTotal() {return total;}
}
5.1.5 单例设计模式
概念
1.所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例
2.如何实现?
饿汉式 VS 懒汉式
3.区分饿汉式和懒汉式。
饿汉式:坏处:对象加载时间过长。
好处:饿汉式是线程安全的。
懒汉式:好处:延迟对象的创建。
坏处:目前的写法,会线程不安全。—》到多线程内容时,再修改
代码示例1—饿汉式
public class SingletonTest {public static void main(String[] args) {Bank bank1 = Bank.getInstance();Bank bank2 = Bank.getInstance();System.out.println(bank1 == bank2);//true,因为只有一个对象}
}//单例的饿汉式
class Bank{//1.私有化类的构造器private Bank(){ }//2.内部创见类的对象//4.要求此对象也必须声明为静态的private static Bank instance = new Bank();//3.提供公共的静态的方法,返回类的对象。public static Bank getInstance(){return instance;}
}
代码示例2—懒汉式
public class SingletonTest2 {public static void main(String[] args) {Order order1 = Order.getInstance();Order order2 = Order.getInstance(); System.out.println(order1 == order2);//true}
}
class Order{//1.私有化类的构造器private Order(){ }//2.声明当前类对象,没有初始化。//此对象也必须声明为 static 的private static Order instance = null;//3.声明 public、static 的返回当前类对象的方法public static Order getInstance(){if(instance == null){instance = new Order(); }return instance;}
}
5.2 main()方法的语法(了解)
使用说明
1.main()方法作为程序的入口;
2.main()方法也是一个普通的静态方法
3.main()方法也可以作为我们与控制台交互的方式。(之前,使用 Scanner)
5.3 代码块(类的成员之四)
JavaSE---05面向对象(下)相关推荐
- 【JavaSE】面向对象之多态、向上转型与向下转型
本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️ ❤️ 个人主页:Nezuko627 欢迎来访~~~ ⭐️往期回顾: [JavaSE]继承中内存发生了什么变化?这篇文章 ...
- 对象属性结构赋值_(六)面向对象-下
(六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...
- JAVASE学习 面向对象
JAVASE学习 面向对象 1.面向对象(构造方法Constructor概述和格式) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名 ...
- 【JavaSE】面向对象(下)(311~365)
311.面向对象(下)-每天一考 1.如何实现向下转型?需要注意什么问题?如何解决此问题? //Person p = new Man(); //使用强转符:() Man m = (Man)p; //可 ...
- Java全栈(二)JavaSE:14.面向对象下
一.抽象类 1.1 由来 抽象:即不具体.或无法具体 例如:当我们声明一个几何图形类:圆.矩形.三角形类等,发现这些类都有共同特征:求面积.求周长.获取图形详细信息.那么这些共同特征应该抽取到一个公共 ...
- 面向对象下 abstract关键字(宋红康JAVASE)
abstract关键字的使用 1 abstract:抽象的 2 abstract可以用来修饰的结构:类.方法 3 abstract修饰类:抽象类 此类不能实例化 抽象类中一定有构造器,便于子类实例化时 ...
- 关于javase的面向对象部分的知识点的梳理,欢迎各位指正和补充
面向对象 面向对象思想 类的关系 关联 关联是一种描述两个类之间行为的一般二元关系. 关联中的每个类可以指定一个数字或一个数字区间,表示该关联涉及类中的多少个对象. 在 Java 代码中,关联可以用数 ...
- JavaSE之面向对象
面向对象概述 概述 编程语言是人类创造的,因此里面很多思想来源于生活.程序员使用编程技术开发软件也是为了解决生活中一些繁琐的问题,这一段内容将要学习一种编程思想-面向对象,Java就是一门面向对象设计 ...
- 【JavaSe】面向对象篇(五) 三大特征之二继承
JavaSe·面向对象篇(五) 三大特征之二继承 1. 面向对象三大特质之继承 1.1 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那 ...
最新文章
- 面试官:高并发下,如何保证分布式唯一全局 ID 生成?
- OpenAI高调站队:深度学习框架以后主要用PyTorch
- decisiontreeregressor_机器学习算法-Decision Tree
- 牛腩新闻发布系统(2)使用存储过程查询表
- CISS.SideMenu的bug
- 关于Java的23种设计模式的有趣见解
- Linux .bin安装文件制作
- MySql中 delimiter 详解
- iOS编写最简单的界面切换应用
- Linux 命令(107)—— systemctl 命令
- Excel 使用ODBC 连接mysql 5.0
- Open Set Domain Adaptation 开集领域适应
- TSL1401 CCD传感器驱动
- POJ 2706 棋盘连线游戏(模拟)
- 【转载】TinyXML2使用教程
- java 编配和弦_六个和弦编配小诀窍,让你的弹唱伴奏丰富好听
- VMWare虚拟机无法正常开启,显示模块“Disk”启动失败的解决办法
- 华为eNSP路由器报错误代码:40,41的问题解决办法。路由器启动无限###。eNSP安装。
- 微信小程序连接蓝牙电子秤
- UART项目验证(一) uart协议与uart ip的理解
热门文章
- libsodium引用报错FileNotFoundError: [Errno 2] No such file or directory: b‘liblibsodium.a‘
- 云瞻外卖江湖外卖满天星外卖美赚外卖CPS系统小程序软件源码开发
- Windows查看和设置网卡的MTU值
- windows 通过修改注册表来修改主机名
- 心里窝火无语的图片_很无语的心情说说带图
- 解决谷歌翻译TranslateException: Error getting access token for service account: Connection reset
- 关于数据挖掘的文献综述
- ROS python编程
- 低代码指南100解决方案:41还在用excel做进销存管理?这个系统让采购、仓库、销售管理更简单
- 软工视频-----第三章 需求分析
本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️ ❤️ 个人主页:Nezuko627 欢迎来访~~~ ⭐️往期回顾: [JavaSE]继承中内存发生了什么变化?这篇文章 ...
(六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...
JAVASE学习 面向对象 1.面向对象(构造方法Constructor概述和格式) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名 ...
311.面向对象(下)-每天一考 1.如何实现向下转型?需要注意什么问题?如何解决此问题? //Person p = new Man(); //使用强转符:() Man m = (Man)p; //可 ...
一.抽象类 1.1 由来 抽象:即不具体.或无法具体 例如:当我们声明一个几何图形类:圆.矩形.三角形类等,发现这些类都有共同特征:求面积.求周长.获取图形详细信息.那么这些共同特征应该抽取到一个公共 ...
abstract关键字的使用 1 abstract:抽象的 2 abstract可以用来修饰的结构:类.方法 3 abstract修饰类:抽象类 此类不能实例化 抽象类中一定有构造器,便于子类实例化时 ...
面向对象 面向对象思想 类的关系 关联 关联是一种描述两个类之间行为的一般二元关系. 关联中的每个类可以指定一个数字或一个数字区间,表示该关联涉及类中的多少个对象. 在 Java 代码中,关联可以用数 ...
面向对象概述 概述 编程语言是人类创造的,因此里面很多思想来源于生活.程序员使用编程技术开发软件也是为了解决生活中一些繁琐的问题,这一段内容将要学习一种编程思想-面向对象,Java就是一门面向对象设计 ...
JavaSe·面向对象篇(五) 三大特征之二继承 1. 面向对象三大特质之继承 1.1 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那 ...