1. 属性与方法
属性和方法都是类的成员,用于描述类的特征,每个类都可以有若干个属性、若干个方法。
public class Sample {
}
属性用于描述可以使用值进行量化的特征,通常属性的名称会使用名词,例如:
public class Person {
String from; // 默认为null
String name; // 默认为null
int height; // 默认为0
float weight; // 默认为0.0f
}
方法用于描述动作或者行为,通常方法的名称是动词,例如:
public class Person {
void eat() {
// 东西怎么吃的?
}
void run() {
// 怎么实现跑步的?
}
}
方法的参数:参数是当执行方法时所需要的条件。
public class Sample {
void sum(int x, int y) {
}
}
当方法声明了参数后,调用该方法时,必须提供匹配数据类型、匹配数量、匹配位置的参数值,例如:
public class Test {
public static void main(String[] a) {
Sample sample = new Sample();
// sample.sum(); // 错误
// sample.sum(1234); // 错误
// sample.sum("hello"); // 错误
sample.sum(10, 20); // 正确
}
}
每一个方法都可以有返回值,如果不需要返回值,则应该声明返回类型为void,如果需要,则声明为对应的类型,且在方法的最后,应该使用return语句返回对应类型的数据,例如:
public class Sample {
int sum(int x, int y) {
return x + y;
}
}
当调用有返回值的方法时,可以获取其返回值,也可以不获取,例如:
public class Test {
public static void main(String[] args) {
Sample sample = new Sample();
sample.sum(10, 15); // 仅调用,不获取值
int a = sample.sum(3, 7); // 调用,且获取值
}
}
对于声明为void返回值的方法,也可以使用return语句,但是,return关键字后不可以有任何值,例如:
public class Sample {
void test() {
return;
// System.out.println(); // 无法被执行的语句,错误
}
}
不管返回值是什么类型,return都应该是方法的最后一条有效语句。
为了便于开发,方法允许重载(Overload),即:在同一个类中允许存在若干个名称相同的方法,但是,这些方法的参数列表必须不同,例如:
public class Sample {
void run() {}
void run(int x) {}
void run(String str) {}
void run(String str1, String str2, int x) {}
void run(int x, String str2, String str1) {}
void run(String str1, int x, String str2) {}
}
参数列表的区别表现为:数量、数据类型、顺序
【测试题】
public class Test1 {
public static void add1(int i) {
i++;
}
public static void add2(int[] arr) {
arr[0]++;
}
public static void main(String[] args) {
int x = 10;
add1(x);
System.out.println("x=" + x); // 10
int[] array = { 9, 5, 2, 7 };
add2(array);
System.out.println("array[0]=" + array[0]); // 10
}
}
public class Test2 {
public static void main(String[] args) {
int x = 10;
int y;
y = x;
y = 15;
System.out.println("x=" + x); // 10
System.out.println("y=" + y); // 15
int[] arr1 = { 9, 5, 2, 7 };
int[] arr2;
arr2 = arr1;
arr2[0] = 15;
System.out.println("arr1[0]=" + arr1[0]); // 15
System.out.println("arr2[0]=" + arr2[0]); // 15
}
}
2. 构造方法
构造方法是一类特殊的方法,其特征是:
1) 构造方法不允许声明返回值类型,即连void都不可以
2) 构造方法的名称必须与类的名称完全相同
如果类中没有显式的声明构造方法,则编译器会自动的添加公有的、无参数的构造方法,例如以下2段代码是等效的:
public class Person {
}
public class Person {
public Person() {
super();
}
}
构造方法用于创建类的对象,例如:
public class Test {
public static void main(String[] args) {
Person p = new Person();
}
}
如果开发者显式的声明了构造方法,则编译器不会再自动添加构造方法。
构造方法可以用于创建对象时直接指定对象的某些属性值,例如没有构造方法时:
public class Person {
public String name;
public int age;
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.name = "Jack";
p.age = 18;
}
}
如果指定了构造方法:
public class Person {
public String name;
public int age;
public Person(String personName, int personAge) {
name = personName;
age = personAge;
}
}
public class Test {
public static void main(String[] args) {
Person p = new Person("Jack", 18);
}
}
构造方法也可以重载,例如:
public class Person {
public String name;
public int age;
public Person() {
}
public Person(String personName, int personAge) {
name = personName;
age = personAge;
}
}
3. this、super关键字
this表示当前类的对象,super表示当前类的父类的对象。
public class Person extends Object {
public String name;
public Person() {
this("unknown"); // 调用自身的另一个构造方法
}
public Person(String name) {
super(); // 调用父类的构造方法
this.name = name;
}
public String toString() {
return null;
}
public void test1() {
super.toString();
}
public void test2() {
toString();
}
}
public class Test {
public static void main(String[] args) {
Person jack = new Person("Jack");
jack.name = "Jackson";
// Person.name = "???"; // 普通属性不可以这样调用
Person mike = new Person("Mike");
}
}
属性和方法都是类的成员,用于描述类的特征,每个类都可以有若干个属性、若干个方法。
public class Sample {
}
属性用于描述可以使用值进行量化的特征,通常属性的名称会使用名词,例如:
public class Person {
String from; // 默认为null
String name; // 默认为null
int height; // 默认为0
float weight; // 默认为0.0f
}
方法用于描述动作或者行为,通常方法的名称是动词,例如:
public class Person {
void eat() {
// 东西怎么吃的?
}
void run() {
// 怎么实现跑步的?
}
}
方法的参数:参数是当执行方法时所需要的条件。
public class Sample {
void sum(int x, int y) {
}
}
当方法声明了参数后,调用该方法时,必须提供匹配数据类型、匹配数量、匹配位置的参数值,例如:
public class Test {
public static void main(String[] a) {
Sample sample = new Sample();
// sample.sum(); // 错误
// sample.sum(1234); // 错误
// sample.sum("hello"); // 错误
sample.sum(10, 20); // 正确
}
}
每一个方法都可以有返回值,如果不需要返回值,则应该声明返回类型为void,如果需要,则声明为对应的类型,且在方法的最后,应该使用return语句返回对应类型的数据,例如:
public class Sample {
int sum(int x, int y) {
return x + y;
}
}
当调用有返回值的方法时,可以获取其返回值,也可以不获取,例如:
public class Test {
public static void main(String[] args) {
Sample sample = new Sample();
sample.sum(10, 15); // 仅调用,不获取值
int a = sample.sum(3, 7); // 调用,且获取值
}
}
对于声明为void返回值的方法,也可以使用return语句,但是,return关键字后不可以有任何值,例如:
public class Sample {
void test() {
return;
// System.out.println(); // 无法被执行的语句,错误
}
}
不管返回值是什么类型,return都应该是方法的最后一条有效语句。
为了便于开发,方法允许重载(Overload),即:在同一个类中允许存在若干个名称相同的方法,但是,这些方法的参数列表必须不同,例如:
public class Sample {
void run() {}
void run(int x) {}
void run(String str) {}
void run(String str1, String str2, int x) {}
void run(int x, String str2, String str1) {}
void run(String str1, int x, String str2) {}
}
参数列表的区别表现为:数量、数据类型、顺序
【测试题】
public class Test1 {
public static void add1(int i) {
i++;
}
public static void add2(int[] arr) {
arr[0]++;
}
public static void main(String[] args) {
int x = 10;
add1(x);
System.out.println("x=" + x); // 10
int[] array = { 9, 5, 2, 7 };
add2(array);
System.out.println("array[0]=" + array[0]); // 10
}
}
public class Test2 {
public static void main(String[] args) {
int x = 10;
int y;
y = x;
y = 15;
System.out.println("x=" + x); // 10
System.out.println("y=" + y); // 15
int[] arr1 = { 9, 5, 2, 7 };
int[] arr2;
arr2 = arr1;
arr2[0] = 15;
System.out.println("arr1[0]=" + arr1[0]); // 15
System.out.println("arr2[0]=" + arr2[0]); // 15
}
}
2. 构造方法
构造方法是一类特殊的方法,其特征是:
1) 构造方法不允许声明返回值类型,即连void都不可以
2) 构造方法的名称必须与类的名称完全相同
如果类中没有显式的声明构造方法,则编译器会自动的添加公有的、无参数的构造方法,例如以下2段代码是等效的:
public class Person {
}
public class Person {
public Person() {
super();
}
}
构造方法用于创建类的对象,例如:
public class Test {
public static void main(String[] args) {
Person p = new Person();
}
}
如果开发者显式的声明了构造方法,则编译器不会再自动添加构造方法。
构造方法可以用于创建对象时直接指定对象的某些属性值,例如没有构造方法时:
public class Person {
public String name;
public int age;
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.name = "Jack";
p.age = 18;
}
}
如果指定了构造方法:
public class Person {
public String name;
public int age;
public Person(String personName, int personAge) {
name = personName;
age = personAge;
}
}
public class Test {
public static void main(String[] args) {
Person p = new Person("Jack", 18);
}
}
构造方法也可以重载,例如:
public class Person {
public String name;
public int age;
public Person() {
}
public Person(String personName, int personAge) {
name = personName;
age = personAge;
}
}
3. this、super关键字
this表示当前类的对象,super表示当前类的父类的对象。
public class Person extends Object {
public String name;
public Person() {
this("unknown"); // 调用自身的另一个构造方法
}
public Person(String name) {
super(); // 调用父类的构造方法
this.name = name;
}
public String toString() {
return null;
}
public void test1() {
super.toString();
}
public void test2() {
toString();
}
}
public class Test {
public static void main(String[] args) {
Person jack = new Person("Jack");
jack.name = "Jackson";
// Person.name = "???"; // 普通属性不可以这样调用
Person mike = new Person("Mike");
}
}