Java面向对象(三):Java权限修饰符—static关…
2018-08-21 05:32:37来源:博客园 阅读 ()
一、权限修饰符
1.1 四类权限修饰符
public 公开的
protected 受保护的
private 私有的
默认的(不写其它修饰符时);
1、public修饰的成员变量,任何人都可以访问,都可以修改,可能导致不安全。
2、private修饰的成员变量为私有属性,只有本身才能去操作相关的信息。
1.2访问控制:当前类修饰的成员变量能否被其他不同类访问
具体参考:权限修饰符:http://www.runoob.com/java/java-modifier-types.html#protected-desc
参考例程:
Pack1:Father.java、 Son.java、 TextFather.java
Pack2:TextFather.java、Son.java
测试代码较多逻辑简单不贴了,另子类继承父类内容参考下一篇博客;
二、 static 关键字
1.1 static修饰成员变量即为静态变量
1、 静态变量与成员变量的区别:
访问方式:成员变量的访问通过创建对象后访问;引用名.成员变量
静态变量的访问可以直接通过类名访问;类名.静态变量,也可用对象的引用名但一般不建议。
存储位置:成员变量存储在堆内存,静态变量存储在方法区。
生命周期:成员变量随对象的创建而创建,对象的消失而消失;
静态变量随类的创建而创建,类的消失而消失;
2、注:静态变量为类下所有对象共有的,它的值决定于最后一次的改变值。成员变量每个对象都有对应的值,彼此不影响(存疑)
3、例程:
Demo1.java
1 package object_static; 2 3 public class Demo1 { 4 5 static String name ; 6 static int age ; 7 int tall ; 8 private int weight ; 9 public void show() { 10 System.out.println("我是非静态的"+name+age+tall); 11 } 12 13 static void staticShow() { 14 System.out.println("我是静态的"+name+age); 15 // System.out.println(tall); 静态方法不能访问非静态的变量 16 } 17 18 }
TextDemo1.java
1 package object_static; 2 /** 3 * 1、对静态变量静态方法的操作 4 * 2、静态变量用 类.变量 来改变,用 引用名.变量 也可以改变但不建议。其值取决于最后一次改变的值, 5 * 在所有的实例中都是一样的。 6 * 7 * */ 8 public class TextDemo1 { 9 public static void main(String[] args) { 10 11 Demo1 demo1 = new Demo1(); 12 Demo1 demo2 = new Demo1(); 13 // demo1.weight = 53; 14 System.out.println(demo1.age); 15 16 System.out.println(Demo1.age); 17 18 //改变静态变量 19 Demo1.age = 3; 20 21 //在所有的实例中都是一样的 22 demo1.age = 34; 23 demo1.tall= 178; 24 demo1.show(); 25 26 //对象调用静态方法 27 demo1.staticShow(); 28 29 //类调用静态方法 30 Demo1.staticShow(); 31 32 demo2.show(); 33 } 34 35 }
1.2 static 修饰成员方法即为静态方法
1、静态方法可直接通过类名访问,类名.静态方法;
2、静态方法只能访问静态变量,不能访问非静态的成员(包括成员变量和成员方法)。
3、main方法即为静态的。
1.3 static 代码块与代码块(掌握)
1、static 代码块
语法:
static{
代码块;
}
2、构造代码块:
语法:
{
代码块
}
3、例程 Demo2.java
1 package object_static; 2 /**** 3 * @author Kanekiyi 4 * 1、static代码块在类加载前就被执行,只执行一次,一般用于视频/音频/图片的加载; 5 * 2、构造代码块只能在创建对象时被调用,创建一次对象执行一次,优先级高于构造函数。 6 * 3、执行优先级:static代码块>构造代码块>构造函数 7 * 8 * */ 9 10 public class Demo2 { 11 12 public static void main(String[] args) { 13 14 Demo2 de = new Demo2(); 15 System.out.println("—————————————————"); 16 17 Demo2 de2 = new Demo2(); 18 19 System.out.println("我是main方法块"); 20 21 22 } 23 24 { 25 System.out.println("我是构造代码块4"); 26 27 } 28 // 静态代码块在所有程序执行之前执行 29 static { 30 System.out.println("我是静态代码块"); 31 } 32 33 public Demo2() { 34 System.out.println("我是无参代码块"); 35 36 } 37 38 // 构造代码块 通过new出来的对象调用,没用引用不会执行,执行优先级仅次于static代码块 39 { 40 System.out.println("我是构造代码块1"); 41 42 } 43 { 44 System.out.println("我是构造代码块3"); 45 46 } 47 48 }
4、总结:
static静态代码块执行的优先级最高,先于类的加载,且只执行一次;一般用去图像、视频、音频等多媒体的加载;
构造代码块必须在创建对象之后才能被访问,在执行构造函数之前就被加载了。每创建一次加载一次;
5、思考题;
static 代码块、构造函数、构造代码块执行的优先级;
static代码块>构造代码块>构造函数
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash