单词 | 说明 |
this | 这,这个 |
static | 静态的 |
overloaded | 重载,超载 |
overloaded method | 方法重载 |
public | 公共的 |
private | 私有的 |
一、什么是封装
封装就是隐藏实现细节,将属性私有化,提供共有方法访问私有属性。
封装可以实现:
- 修改属性的可见性来限制对属性的访问。
- 为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问。
- 在setter和getter方法中,加入对属性的存取限制。
- 使用private关键字封装私有属性。
二、构造方法
构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。
构造方法必须同时满足方法名和类名相同、没有返回值这两个条件。
使用new关键字调用构造方法:
通过带参数的构造方法,显式地为实例变量赋予初始值:
通过调用带参数的构造方法,简化对象初始化的代码:
三、方法地重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
public class Overloading { public int test(){ System.out.println("test1"); return 1; } public void test(int a){ System.out.println("test2"); } //以下两个参数类型顺序不同 public String test(int a,String s){ System.out.println("test3"); return "returntest3"; } public String test(String s,int a){ System.out.println("test4"); return "returntest4"; } public static void main(String[] args){ Overloading o = new Overloading(); System.out.println(o.test()); o.test(1); System.out.println(o.test(1,"test3")); System.out.println(o.test("test4",1)); } }
构造方法重载是方法重载的典型示例:
四、this关键字
每个对象都有自己独立的数据成员, 但是所有的对象共享成员方法。每个成员方法都有一个隐含的this引用,它总是指向调用它的对象。关键字this给出用于调用成员方法的对象的地址,每当调用成员方法时,编译器会向this分配调用该方法的对象的地址,可以像使用任何引用那样使用this。
五、静态成员变量
在成员变量前加static关键字,可以将其声明为静态成员变量。如果类中成员变量被定义为静态,那么不论有多少个对象,静态成员变量只有一份内存拷贝,即所有对象 共享该成员变量。静态成员变量的作用域只在类内部,但其生命周期却贯穿整个程序。
class Dog { public static int count = 0; //静态成员变量 public Dog() //构造方法 { count++; } } public class Test { public static void main(String[] args) { System.out.println("当前狗的数量是:" + Dog.count); Dog d1 = new Dog(); Dog d2 = new Dog(); System.out.println("当前狗的数量是:" + Dog.count); } }
静态成员变量和程序同生命周期,在没有实例化对象时,可以通过类名访问静态成员变量。也可以通过对象访问静态成员变量,但不论使用的是哪个对象,访问到的都是同一个变量。静态成员变量在声明时最好初始化,如果不进行初始化,系统会默认初始化为初始值。
六、静态成员方法
在成员方法前加static关键字,可以将其声明为静态成员方法。
静态成员方法只能对类的静态成员变量进行操作。
静态成员方法没有this引用。
在没有实例化对象时,可以通过类名访问静态成员方法。
class Dog { private static int count = 0; //静态成员变量 public Dog() { count++; } //显示数量的方法,静态成员方法 public static void displayCount() { System.out.println("当前狗的数量是:" + count); } } public class Test { public static void main(String[] args) { //没有实例化对象之前,直接通过类名调用静态成员方法 Dog.displayCount(); Dog d1 = new Dog(); Dog d2 = new Dog(); Dog.displayCount(); } }
- 静态成员包括静态成员属性和静态成员方法。
- 静态成员属于整个类而不是属于某个对象,它被该类的所有对象共享。
- 访问静态成员时一般通过类名访问,也可以通过对象访问。
- 静态成员也受访问权限的约束。
- 静态数据成员在使用之前应尽量初始化。
- 静态成员方法不能操作非静态成员。
- 静态成员方法没有this引用。
结束!