按需求手写标准类-讲解基本组成实现功能
标准类写法及构造方法、成员方法的区别
-
标准类的结构构造
-
写好一个标准类是最基础的Java语言体,在写这个标准类的时候首先要明白有以下部分组成:
-
定义一个编辑类(或者叫测试类);
-
接着写一个要实现功能的自定义类;
- 自定义类中要包含以下:
成员变量;
构造方法;
成员方法(getxxx()、setxxx());
以及其他成员方法;
- 利用编辑类调用自定义类功能实现编译运行。
- 本篇文章,会依据上述内容展开表述如何建立一个标准类,且构造方法和成员方法的区别。类简单的来描述就是一组事物的属性和行为的集合。
需求
实现高圆圆、女、39,且是爱玩游戏的高圆圆;实现杨洋、男、40,且是爱打篮球的杨洋。
测试类-创建
- 创建一个测试类(编译/编辑)测试类:
class Test{
public static void main(String[] args){
}
自定义类—创建
- 前提自定义一个学生类:
class Student{
}
自定义类—成员变量
- 一组事物的属性且是公共,可以建立为一个成员变量。比如学生,每个学生有名字、性别、年龄等共有特性, 则可以成为成员变量,而且这些属性不能被随便改变所以一般是[私有化的成员变量]。
- 创建成员变量:
private String name ; // 姓名
private String gender ; // 性别
private int age ; // 年龄
自定义类—构造方法
-
什么是构造方法:
1)构造方法的方法名和要自定义类的类名一致;
2)没有具体的返回值类型(连void都没有);
3)构造方法包括无参和有参; -
构造方法需要注意:
1)在自定义类中,开发者没提供无参构造方法,系统会默认提供无参构造方法(建议永远给出无参构造方法);
2)如果开发者提供了有参构造,那么系统不会在提供无参构造方法,在使用setxxx()后面的成员方法的时候会报错;
3)构造方法是可以重载的; -
构造方法要看成员变量是否为私有化:
1)如果为私有化,为了配合编辑类所以在自定义类中要使用this(本类的地址指向); -
创建构造方法(无参、有参):
//无参构造方法
public Student(){
}
//有参构造方法
public Student(String name,String gender,int age){
this.name = name ;
this.age = age ;
this.gender = gender;
}
自定义类—成员方法
-
什么是成员方法:
是实现某一功能或者某一行为的动作指令。 -
方法具体划分:
1)根据返回值
有明确返回值方法 ;
无明确返回值方法(void);
2)根据形式参数
无参方法 ;
有参方法; -
对私有化的成员变量进行赋值及输出,需要使用使用成员方法的getxxx()、setxxx():
-
创建成员方法(getxxx()、setxxx()):
public void setName(String name){
this.name = name ;
}
public String getName(){
return name ;
}
public void setGender(String gender){
this.gender = gender ;
}
public String getGender(){
return gender;
}
public void setAge(int age){
this.age = age ;
}
public int getAge(){
return age ;
}
自定义类—其他成员方法
- 其他成员方法是实现该类学生独有的某一功能或者某一行为的动作指令。有的同学喜欢打篮球,也有的喜欢玩游戏,爱好可能不唯一所以要建立特有爱好的成员方法。
- 创建其他成员方法(eg.打篮球/玩游戏):
public void exercise(){
System.out.println("爱打篮球的"+name);
}
public void motion (){
System.out.println("爱玩游戏的"+name);
}
整合自定义类
-
- 完成自定义类的封装:
成员变量;
构造方法;
成员方法(getxxx()、setxxx());
以及其他成员方法;。
- 完成自定义类的封装:
- 完成Student类:
class Student{
//成员变量:私有化
private String name ; //名字
private String gender ; //性别
private int age ; //年龄
//构造方法:无参/有参,全部提供
//无参构造方法
public Student(){
}
//有参构造方法
public Student(String name,int age,String gender){
this.name = name ; //赋值指向本类name
this.age = age ;
this.gender = gender;
}
//成员方法:setXXX()/getXXX()公共访问方法
public void setName(String name){
this.name = name ; //赋值指向本类name
}
public String getName(){
return name ; //将本类name输出
}
public void setAge(int age){
this.age = age ;
}
public int getAge(){
return age ;
}
public void setGender(String gender){
this.gender = gender ;
}
public String getGender(){
return gender;
}
//其他成员方法--打篮球/玩游戏
public void exercise(){
System.out.println("爱打篮球的"+name);
}
public void motion (){
System.out.println("爱玩游戏的"+name);
}
}
测试类实现需求功能
分析需求:
- 利用有参+getxxx()成员方法+其他成员方法,实现高圆圆、女、39,且爱玩游戏的高圆圆;
- 利用无参+setxxx()、getxxx()构造方法+其他成员方法,实现杨洋、男、40,且"爱打篮球的杨洋。
- 完成测试类封装实现功能测试类封装功能:
class Test{
public static void main(String[] args){
//直接通过有参构造方法赋值
Student s2 = new Student("高圆圆","女",39) ;
System.out.println(s2.getName()+"---"+s2.getGender()+"---"+s2.getAge()) ;
s2.motion();
System.out.println("------------------------------------") ;
//无参构造+ setXXX()/getXXX()
Student s1 = new Student();
s1.setName("杨洋");
s1.setGender("男") ;
s1.setAge(40) ;
System.out.println(s1.getName()+"---"+s1.getGender()+"---"+s1.getAge()) ;
s1.exercise();
}
}
完成标准类
- 封装测试类+自定义类,实现功能标准类:
//自定义类
class Student{
//成员变量:私有化
private String name ; //名字
private String gender ; //性别
private int age ; //年龄
//构造方法:无参/有参,全部提供
//无参构造方法
public Student(){
}
//有参构造方法
public Student(String name,String gender,int age){
this.name = name ;
this.age = age ;
this.gender = gender;
}
//成员方法:setXXX()/getXXX()公共访问方法
public void setName(String name){
this.name = name ;
}
public String getName(){
return name ;
}
public void setAge(int age){
this.age = age ;
}
public int getAge(){
return age ;
}
public void setGender(String gender){
this.gender = gender ;
}
public String getGender(){
return gender;
}
//其他成员方法--打篮球/玩游戏
public void exercise(){
System.out.println("爱打篮球的"+name);
}
public void motion (){
System.out.println("爱玩游戏的"+name);
}
}
//测试类
class Test{
public static void main(String[] args){
//直接通过有参构造方法赋值
Student s2 = new Student("高圆圆","女",39) ;
System.out.println(s2.getName()+"---"+s2.getGender()+"---"+s2.getAge()) ;
s2.motion();
System.out.println("------------------------------------") ;
//无参构造+ setXXX()/getXXX()
Student s1 = new Student();
s1.setName("杨洋");
s1.setGender("男") ;
s1.setAge(40) ;
System.out.println(s1.getName()+"---"+s1.getGender()+"---"+s1.getAge()) ;
s1.exercise();
}
}
编译
- 编译运行后结果: