目的
学习关于1.java封装 2. 构造方法3. 重载 4.实例方法和类方法 的相关知识
技术及其使用
1.java封装
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
* setter/getter 方法
* 建议将setter getter 方法定义在最后面避免干扰阅读
* 间接给对象赋值
public class javaday3 {
public static void main(String[] args){
Poker p =new Poker();
p.setNumber("A");
p.getNumber();
Poker pp = new Poker();
System.out.println(pp.getNumber());
System.out.println(pp.getColor());
Poker pp2 = new Poker("K","♢");
System.out.println(pp2.getColor());
System.out.println(pp2.getNumber());
}
}
class Poker{
private String number;
private String color;
public Poker(String num,String col){
this.number = num ;
this.color = col;
System.out.println("自定义的构造方法");
}
public void setNumber(String num){
number = num;
}
public String getNumber(){
return number;
}
//这里的this指创建的这个对象
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
2.构造方法
定义:简单的来说是给对象的数据进行初始化的。
构造方法是类的一个特殊的成员,在类实例化时会自动调用。
* 构造方法/
*a.希望在对象创建的时候 做点其他事情
* b.早对象创建的时候 需要给对象赋值 自定义
构造方法定义格式:
修饰符 方法名()
{
}
1.方法名与类名相同。
2.没有返回值类型。
3.没有具体的返回值。
class Poker{
//成员变量的作用域 从对象的创建到对象被销毁
private String number;
private String color;
//类的默认构造方法
public Poker(){
System.out.println("构造方法");
};
//构造方法的重载 重新写一个有参数的构造方法
//通常给一个属性赋值 形参名尽量和属性名一致
//变量在使用的时候有就近原则
//这里的this指创建的这个对象
public Poker(String num,String col){
this.number = num ;
this.color = col;
System.out.println("自定义的构造方法");
}
}
3.方法重载
重载(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));
}
}
4.实例方法和类方法
- 实例方法/对象方法:必须创建某一个对象才能调用的方法
- 类方法/静态方法 不需要创建对象 直接用这个类来调用
类方法可以通过类名调用,实例方法不能通过类名调用
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址
当该类创建对象后,类中的实例方法才分配入口地址,
从而实例方法可以被类创建的任何对象调用执行。
类方法在该类被加载到内存时,就分配了相应的入口地址。
从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。
类方法的入口地址直到程序退出时才被取消。
class Testday3{
public void test1(){
System.out.println("这是对象方法");
}
public static void test2(){
System.out.println("这是静态方法");
}
}
class T2{
public static void main(String [] args){
//使用类的实例方法/对象方法
Testday3 c1 = new Testday3();
c1.test1();
//使用类方法/静态方法
Testday3.test2();
//什么情况下需要些静态方法
//工厂设计模式Factory
//当不需要记录数据的时候 只关心功能就可以使用静态方法
//注意:静态方法里面不能调用这个类的属性和非静态方法
}
}