学习笔记 Java_封装 2014.7.11
2014-07-11 12:08
357 查看
1、封装(private)
代码:PersonDemo.java
成员变量(作用于整个类中)有默认值,不赋值是能参与运算的,因为它有默认初始值,因为它在堆内存中。因为对象的存在,才在内存中存在。
局部变量(作用于函数中,或者语句中)不初始化是不能参与运算的,因为它在栈内存中,必须要初始化化值才能参与运算。
2、构造代码块:给所有对象进行初始化(对象共性) 使用:单独一个代码区块 { } (虽然开发见不着)
构造函数:给对应的对象初始化
3、static关键字
用法:是一个修饰符,用于修饰成员(成员变量,成员函数),不能修饰局部。
当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员。
特点:
1、随着类的加载而加载;
也就是说:静态会随着类的消息而消失。说明它的生命周期最长。
2、优先于对象存在;
静态是先存在的。对象是后存在的。
3、被所有对象所共享;
4、可以直接被类名所调用。
实例变量和类变量的区别:
1、存放位置:
类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于对内存中。
2、生命周期:
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。
静态使用注意事项:
1、静态方法只能访问静态成员。
非静态方法既可以访问静态也可以访问非静态。
2、静态方法中不可以定义this,super关键字。
因为静态优先于对象存在。所以静态方法中不可以出现this。
3、主函数是静态的。
静态有利有弊:
利:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存储一份。
可以直接被类名调用。
弊:生命周期过长。
访问出现局限性。(静态虽好,只能访问静态。)
代码:MyDate.java
代码:PersonDemo.java
class Person { int age; void speak() { System.out.println("age=" + age); } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); p.age = 20; p.speak(); //得age = 20 // System.out.println(p.speak()); //为什么不可以这么写? } }
class Person { private int age; //private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。 //私有只在本类(Person类)中有效。 void speak() { System.out.println("age=" + age); } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); // p.age = -20; p.speak(); //得不到age了,因为age的权限设为private了 } <strong>}</strong>
class Person { private int age; //将age私有化以后,类以外即使建立了对象也不能直接访问。 //但是人应该有年龄,就需要在Person类中提供对应访问age的方式。 //注意:私有仅仅是封装的一种表现形式 //之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断语句。 //对访问的数据进行操作。提高代码健壮性。 //方法通常都是set、get。如果一个类里面有两个功能setXXX、getXXX,代表这个类里面一定有一个私有的属性就做XXX public void setAge(int a) //set返回值void,不用返回 { if(a > 0 && a < 150) { age = a; System.out.println("age=" + a); } else System.out.println("输入年龄不符合常理!"); } public int getAge() //get不用参数,返回值跟它获取变量一致 { return age; } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); p.setAge(10); } }
成员变量(作用于整个类中)有默认值,不赋值是能参与运算的,因为它有默认初始值,因为它在堆内存中。因为对象的存在,才在内存中存在。
局部变量(作用于函数中,或者语句中)不初始化是不能参与运算的,因为它在栈内存中,必须要初始化化值才能参与运算。
2、构造代码块:给所有对象进行初始化(对象共性) 使用:单独一个代码区块 { } (虽然开发见不着)
构造函数:给对应的对象初始化
3、static关键字
用法:是一个修饰符,用于修饰成员(成员变量,成员函数),不能修饰局部。
当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员。
特点:
1、随着类的加载而加载;
也就是说:静态会随着类的消息而消失。说明它的生命周期最长。
2、优先于对象存在;
静态是先存在的。对象是后存在的。
3、被所有对象所共享;
4、可以直接被类名所调用。
实例变量和类变量的区别:
1、存放位置:
类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于对内存中。
2、生命周期:
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。
静态使用注意事项:
1、静态方法只能访问静态成员。
非静态方法既可以访问静态也可以访问非静态。
2、静态方法中不可以定义this,super关键字。
因为静态优先于对象存在。所以静态方法中不可以出现this。
3、主函数是静态的。
静态有利有弊:
利:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存储一份。
可以直接被类名调用。
弊:生命周期过长。
访问出现局限性。(静态虽好,只能访问静态。)
代码:MyDate.java
public class MyDate //共有的类,与源程序文件同名 { private int year; private static int thisYear; //当前年份,私有静态成员变量 static //静态成员变量初始化 { thisYear = 2014; } public static int getThisYear() //获得今年年份,静态方法 { return thisYear; //访问静态成员变量 } public static boolean isLeapYear(int year) //静态方法 { return year % 400 == 0 || year % 100 != 0 && year % 4 == 0; } } class MyDate_ex { public static void main(String[] args) { System.out.println("今年是" + MyDate.getThisYear() + "年, 闰年?" + MyDate.isLeapYear(MyDate.getThisYear())); //因为getThisYear(),isLeapYear()前面有static修饰,所以可以直接用:类.静态成员(成员变量,成员函数) } }
相关文章推荐
- Java学习笔记002——类、对象、封装
- 黑马程序员 java学习笔记——面向对象1:封装
- Java学习笔记(八)——封装
- JAVA封装学习笔记---JDK中单例模式例子
- Java-马士兵设计模式学习笔记-观察者模式-OOD 封装event
- Java 学习笔记 ------第五章 对象封装
- Java学习笔记——类与对象(封装、继承与多态)
- Java学习笔记----封装和private关键字
- java开发俄罗斯方块学习笔记 Day-5 封装
- JAVA封装学习笔记3--单例模式
- 学习笔记 Java类的封装、继承和多态 2014.7.10
- JAVA学习笔记(五十一)- DBUtil 封装数据库工具类
- 非专业码农 JAVA学习笔记 3 抽象、封装和类(2)
- 【java学习笔记s】封装
- (JAVA SE 学习笔记)Java.SE.第010讲.面向对象之封装.续
- 学习笔记 Java_ch03_封装 2014.7.22
- JAVA学习笔记之-封装,继承,多态 总结
- JAVA学习笔记(十)- 封装与继承
- Java学习笔记(四)之―认识类、对象、封装、继承、多态、打包器
- (JAVA SE 学习笔记)Java.SE.第009讲.面向对象之封装