Java自动化测试(封装和继承 预习5)

Java自动化测试(封装和继承 预习5)

方法/函数重载

规则:方法名一致,参数不一致,与返回值无关

  1. 参数的个数不一样
  2. 参数的类型不一样
  3. 参数的顺序不一样
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package com.zhongxin.method;

    public class Student {
    public void add(int a, int b) {
    System.out.println(a + b);
    }

    public void add(int a) {
    System.out.println(a);
    }

    public void add(int a, double b) {
    System.out.println(a + b);
    }

    public void add(double a, double b) {
    System.out.println(a + b);
    }
    }
1
2
3
4
5
6
7
8
9
10
11
package com.zhongxin.method;

public class Test {
public static void main(String[] args) {
Student s = new Student();
s.add(4, 3);
s.add(4);
s.add(4,3.0);
s.add(4.0, 3.0);
}
}

java内存

java内存包含了:

  • 方法区
  • 寄存器

  • 先进后出
  • 局部变量,方法都在栈中

  • new出来的对象在堆

封装

通过函数的形式将一些代码细节包装起来,防止外部代码的随机访问。

要访问这些数据就必须通过调用函数来完成。

好处:

  • 提高了代码的可读性
  • 提高了代码的可维护性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.zhongxin.method;

public class Phone {
private int size;

public int getSize() {
return size;
}

public void setSize(int size) {
if (size < 1 || size > 10) {
System.out.println("size设置失败");
} else {
this.size = size;
}
}
}
1
2
3
4
5
6
7
8
9
10
package com.zhongxin.method;

public class Test2 {
public static void main(String[] args) {
Phone p = new Phone();
p.setSize(-2);
int size = p.getSize();
System.out.println(size);
}
}

继承

两个类之间通过extends关键字来描述父子关系,子类可以拥有父类的公共方法和公共属性。

  • 提高了代码的复用性
  • 代码的维护性更高

语法:

1
2
3
4
5
6
public class 父类{

}
public class 子类 extends 父类{

}

父类Phone

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.zhongxin.extend;

public class Phone {
private int size;
private String brand;
public String color;

public int getSize() {
return size;
}

public void setSize(int size) {
this.size = size;
}

public String getBrand() {
return brand;
}

public void setBrand(String brand) {
this.brand = brand;
}

public void call(){
System.out.println("打电话");
}

public void show() {
System.out.println("show...");
}
}

子类Phone4S

1
2
3
4
5
6
7
package com.zhongxin.extend;

public class Phone4S extends Phone {
public void siri() {
System.out.println("你好");
}
}

使用

1
2
3
4
5
6
7
8
9
10
11
package com.zhongxin.extend;

public class Test {
public static void main(String[] args) {
Phone p = new Phone();
Phone4S p4 = new Phone4S();
p.call();
p4.call();
p4.siri();
}
}

注意

  1. 如果类不继承任何类,默认继承Object
  2. Java是单继承(一个类只能继承于一个类),多层继承
  3. 创建本类对象之前会先初始化父类对象
  4. 子类不能继承父类的private成员(属性,方法)

super

super指向父类

super()调用父类构造方法

this

this指向当前类(子类)

this()调用本类其他构造

方法重写/覆盖

前提条件:

  • 继承或者实现

子父类中出现一摸一样的方法

作用:

  • 方法升级

修饰符

访问修饰符

  1. public

公共的

  1. protected

受保护的,必须继承后才能访问

  1. 默认修饰符

本类或者同一个包pakage下可以访问

  1. private

私有的,只有本类可以访问

上面1~4 权限依次降低

非访问修饰符

  • static

静态

  • final

常量

1
public final int b = 10;

final

  • abstract

抽象

 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
您的支持将鼓励我继续创作!