初识面向对象
1. 方法重载(Overload)
1.同一个类中 2.方法名称相同 3.参数列表不同 包括参数的个数、类型、顺序 有一个不同即可称之为不同 4.跟返回值、访问权限修饰符 无关
package com.qfedu.test2;/*** 我们编写方法实现计算机加法功能** 方法重载:* 1.同一个类中* 2.方法名称相同* 3.参数列表不同 包括参数的个数、类型、顺序 有一个不同即可称之为不同* 4.跟返回值、访问权限修饰符 无关** @author WHD**/public class Test1 {public int add(int a ,String str) {return 1;}public int add(String str , int a) {return 0;}public int add(int a,int b) {return a + b;}public int add(int a,int b,int c) {return a + b + c;}public int add(int a,int b,int c,int d) {return a + b + c + d;}public int add(int a,int b,int c,int d,int e) {return a + b + c + d + e;}public int add(int a,int b,int c,int d,int e,int f) {return a + b + c + d + e + f;}public static void main(String[] args) {Test1 t1 = new Test1();t1.add(10, 20, 30);System.out.println(t1.add(10, 20));}}
2. 构造方法
2.1 概念
构建 创造 用于创建对象的特殊方法 不能通过.调用 只能在创建对象的时候调用 默认调用无参构造 构造方法书写格式:访问修饰符 + 类名(形参列表){} 普通方法书写格式:访问修饰符 + 返回值类型 + 方法名称(形参列表){}
2.2 无参构造
无参构造是默认存在 不管是否书写都有
package com.qfedu.test3;/*** 构造方法:构建 创造 用于创建对象的特殊方法 不能通过.调用 只能在创建的对象的时候调用* 构造方法书写格式:访问修饰符 + 类名(形参列表){}* 普通方法书写格式:访问修饰符 + 返回值类型 + 方法名称(形参列表){}** 无参构造是默认存在 不管是否书写都有* @author WHD**/public class Student {String name;int age;String gradeName;String hobby;public void print() {System.out.println("名字" + name + ",年龄" + age + ",爱好" + hobby + ",班级" + gradeName);}public Student() {System.out.println("Student类无参构造执行了");}public static void main(String[] args) {Student stu1 = new Student();stu1.name = "赵四";stu1.age = 17;stu1.gradeName = "三年二班";stu1.hobby = "尬舞";}}
2.3 有参构造
我们在创建对象的同时,可以给属性赋值,使用有参构造 无参构造是默认存在 如果书写了有参构造 那么默认的无参将被覆盖 如果想要使用 显式的书写
package com.qfedu.test3;/*** 我们在创建对象的同时,可以给属性赋值,使用有参构造* @author WHD**/public class Student {String name;int age;String gradeName;String hobby;public void print() {System.out.println("名字" + name + ",年龄" + age + ",爱好" + hobby + ",班级" + gradeName);}public Student() {System.out.println("Student类无参构造执行了");}public Student(String n,int a,String gname,String h) {name = n;age = a;gradeName = gname;hobby = h;}public Student(int a) {age = a;}public Student(String n,int a) {name = n;age = a;}public Student(int a,String n) {name = n;age = a;}public static void main(String[] args) {Student stu3 = new Student(20, "大拿");stu3.gradeName = "三年二班";stu3.hobby = "理财";stu3.print();Student stu2 = new Student("广坤", 15, "三年二班", "口技");stu2.print();}}
2.4 构造方法重载
与普通方法重载规则类似 构造方法都是类名,没有返回值,与访问权限无关 所以只要求,参数列表不同 参数的个数 类型 顺序
3. this关键字
this关键字 表示当前对象 this关键字适用场景: 1.访问属性 2.访问方法 3.访问构造方法 this访问构造方法必须在其他构造方法中的第一句 只能使用一次
package com.qfedu.test6;/*** this关键字 表示当前对象* this关键字适用场景:* 1.访问属性* 2.访问方法* 3.访问构造方法 this访问构造方法必须在其他构造方法中的第一句 只能使用一次* @author WHD**/public class Student {String name;int age;String gradeName;String hobby;public void printName() {System.out.println("名字是" + name);}public void printAge() {System.out.println("年龄是" + age);}public void print() {printName();printAge();System.out.println("年龄" + age + ",爱好" + hobby + ",班级" + gradeName);}/*** 回顾之前写的构造方法 名称书写不规范 不符合见名知意的规则 所以我们将参数名称修改* 修改完以后 发现不能正常赋值了 因为使用的都是局部变量* @param name* @param age* @param hobby* @param gradeName*/public Student(String name,int age,String hobby,String gradeName) {// this.name = name;// this(name);// this.age = age;// this(name, age);// this.hobby = hobby;this(name, age, hobby);this.gradeName = gradeName;}public Student(String name,int age,String hobby) {this(name, age);this.hobby = hobby;}public Student(String name,int age) {this(name);this.age = age;}public Student(String name) {this.name = name;}public Student() {}public static void main(String[] args) {Student stu1 = new Student("赵四",17,"尬舞","三年二班");stu1.print();}}
