Java学习基础知识

2025-11-06 20:07:31

1、 请先考虑以下几个问题:  1.什么是封装?  2.关键字private如何使用?  3.构造方法如何创建,又如何使用?  4.如何声明包?如何导入包?  5.包与存储Java源文件的目录结构的关系是什么?  6.如何给类的方法添加JavaDoc注释?    为什么需要封装?  编写一个类,代表教师,要求:  具有属性:姓名、年龄  具有行为:自我介绍  教师的最小年龄要求:22岁

1.        public class Teacher{

2.            public String name;  // 教员姓名

3.            public int age;          //年龄

4.            /**

5.             * 返回自我介绍的内容

6.             */

7.            public String introduction() {

8.                return  "大家好!我是" + name + ",我今年"+ age+"岁";

9.            }

10.      }

复制代码

编写一个测试类,要求:  实例化一个教员对象,并对其初始化  在控制台输出该教员的自我介绍

1.        public class TeacherTest  {

2.            public static void main(String[ ] args) {

3.                Teacher  teacher = new  Teacher();

4.                teacher.name = "李芳";

5.                teacher.age =10;

6.                 System.out.println(teacher.introduction());

7.            }

8.        }

复制代码

运行结果:

1.        大家好!我是李芳,我今年10岁

复制代码

要满足教员的最小年龄要求,可以通过对属性的封装来实现  封装,就是隐藏实现细节  将属性私有化,提供公有方法访问私有属性  通过这些公有方法访问私有属性     Teacher.java

1.        public class Teacher {

2.            private String name;  // 教员姓名

3.            // 返回教员姓名 

4.            public String getName() {

5.                return name;

6.            }

7.            // 设定教员姓名

8.            public void setName(String name) {

9.                this.name = name;

10.          }

11.      }

复制代码

Test.java

1.        public class Test{

2.            public static void main(String args[ ]){

3.                Teacher  teacher = new  Teacher();

4.                teacher.setName ("李芳");

5.                String tName = teacher.getName();

6.            }

7.        }

复制代码

如何实现封装  封装的实现:  1、修改属性的可见性来限制对属性的访问  2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问  3、在setter和getter方法中,加入对属性的存取限制

1.        public class Teacher {

2.            private String name;  // 教员姓名

3.            private int age;          //年龄

4.            public int getAge() {

5.                return age;

6.            }

7.            public void setAge(int age) {

8.                if (age<22) {

9.                     System.out.println("错误!最小年龄应为22岁!");

10.                  this.age = 22;    //如果不符合年龄要求,则赋予默认值

11.              } else {

12.                  this.age = age;

13.              }

14.          }

15.              //此处省略对name属性的setter、getter方法

16.      }

复制代码

测试类通过调用setter方法,为对象的各个属性赋值

1.        public class Test {

2.            public static void main(String[ ] args) {

3.                Teacher teacher = new Teacher();

4.                teacher.setName ("李芳");

5.                teacher.setAge(10);

6.                 System.out.println(teacher.introduction()); 

7.            }

8.        }

复制代码

打印结果:

1.        错误!最小年龄应为22岁!

2.        大家好!我是李芳,我今年22岁

复制代码

使用封装,增加了数据访问限制,增强了程序的可维护性     随堂练习:  请通过代码封装,实现如下需求:  编写一个类Book,代表教材:  具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200  为各属性设置赋值和取值方法  具有方法:detail,用来在控制台输出每本教材的名称和页数  编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确    为什么需要包?  这和我们平时使用文件袋整理文件是一样的道理,优点:  1.文档分门别类,易于查找  2.不同内容的文档可以放在不同的袋子中,拥有相同的名字,避免冲突   3.易于管理     树形文件系统——使用目录解决文件同名冲突问题    如何存放两个同名的类而不冲突?  包——解决类的同名问题  1.允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件  2.防止命名冲突  3.更好的保护类、数据和方法       如何创建包?  使用package声明包,以分号结尾  如果有包的声明,一定作为Java源代码的第一条语句

1.        package com.tiao2tiao.java;

2.        public class School{

3.               ……

4.               public String toString(){

5.                     ……

6.               }         

7.        }  

复制代码

其中,包名是com.tiao2tiao.java  包命名规范:  包名由小写字母组成,不能以圆点开头或结尾  自己设定的包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。  如:域名tiao2tiao.com

1.        package com.tiao2tiao.qm;  

复制代码

自己设定的包名部分依不同机构各自内部的规范不同而不同

1.        package com.tiao2tiao.javagroup.schoolproject;

复制代码

包与目录的关系  创建好的包和Java源文件是如何存储的?  创建包com.tiao2tiao.qm,即应该对应于目录结构:..\com\tiao2tiao\qm  如何导入包?  为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类  语法:

1.        import   包名. 类名;

复制代码

代码示例:

1.        import java.util.*;      //导入java.util包中所有类

2.        import java.util.Scnner;    //导入java.lang包中的Scanner类

3.        import com.tiao2tiao.javagroup.schoolproject.Teacher;//导入自定义包中的Teacher类

复制代码

1、系统包(eg:java.util,java.lang)  2、自定义包:com.tiao2tiao.javagroup.schoolproject                                  *:指包中的所有类  Scanner:指包中的Scanner类        注意:一旦类放入包中,包名和类名共同组合才能描述一个类  java.lang.包是自动导入的,可以不需要写import  java.lang.*;语句    为什么需要构造方法   问题:开发教师类Teacher,要求:  具有属性:姓名、年龄、学历、职位  具有行为:自我介绍  Teacher.java

1.        public class Teacher {

2.            private String name;          // 姓名

3.            private int  age;                  // 年龄

4.            private String education; // 学历

5.            private String position;    // 职位

6.            public String introduction() {

7.                return "大家好!我是" + name + ",我今年” + age + "岁,学历“

8.                                      +education+",目前职位是"+position;

9.            }

10.          public String getName() {

11.              return name;

12.          }

13.          public void setName(String myName) {

14.              name = myName;

15.          }

16.          // 以下是其他属性的setter、getter方法,此处省略

17.      }

复制代码

编写一个测试类,要求:  实例化一个教员对象,并对其初始化,在控制台输出该教员的自我介绍  TeacherTest.java

1.        public class TeacherTest {

2.            public static void main(String[ ] args) {

3.                Teacher  teacher = new  Teacher();

4.                teacher.setName("李芳");

5.                teacher.setAge(23);

6.                teacher.setEducation("本科");

7.                 System.out.println(teacher.introduction());

8.            }

9.        }

复制代码

构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值  构造方法必须满足以下语法规则:  1、方法名与类名相同  2、没有返回类型

1.       public class  Teacher {

2.            private String name;  // 教员姓名

3.            // 构造方法 

4.            public  Teacher() {

5.                name = "无名氏";

6.            }

7.        }

复制代码

使用new关键字调用构造方法

1.        public class TeacherTest {

2.            public static void main(String[ ] args) {

3.                 Teacher  teacher = new  Teacher();

4.            }

5.        }

复制代码

带参数的构造方法

1.        public class Teacher {

2.            private String name;          // 教员姓名

3.            private int age;                   // 年龄

4.            private String education;  // 学历

5.            private String position;     // 职位

6.            // 带参数的构造方法

7.            public Teacher(String pName,int pAge,

8.                           String  pEducation,String  pPosition) {

9.                name = pName;

10.              age = pAge;    // 可以增加对age等属性的存取限制条件

11.              education = pEducation;

12.              position = pPosition;

13.          }

14.          public String introduction() {

15.              return "大家好!我是" + name + ",我今年" + age + "岁,学历" 

16.                          + education + ",目前职位是"+position;

17.          }

18.      }

复制代码

通过调用带参数的构造方法,简化对象初始化的代码 

1.        public class TeacherTest {

2.            public static void main(String[ ] args) {

3.                Teacher  teacher  =  new Teacher("李芳",  23, "本科", "初级教师");

4.                 System.out.println(teacher.introduction());

5.            }

6.        }

复制代码

创建对象时,一并完成了对象成员的初始化工作  运行结果:大家好!我是李芳,我今年23岁,学历本科,目前职位是初级教师    随堂练习:  编写一个类Book2,代表教材:  具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200  具有方法: detail,用来在控制台输出每本教材的名称和页数。  具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制  编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确    JavaDoc注释  回顾学过的注释方式  单行注释://这里是注释  多行注释:/*这里是注释1                            这里是注释2*/  JavaDoc注释:使用“/**”开始和“*/”结束,用来注释类,方法等

1.        /**

2.               * 自我介绍

3.               * @return strInfo 介绍信息

4.               */ 

5.            public String introduction() {

6.                String strInfo="大家好!我是" + name + ",我今年" + age + "岁,学历" 

7.                            + education + ",目前职位是"+position;

8.                return strInfo ;

9.            }

10.      }

复制代码

针对类的JavaDoc注释:  Teacher类:描述信息   @author :描述作者信息  @version :描述版本信息          针对方法的JavaDoc注释:  自我介绍:是描述信息                             @return:描述方法的返回值  关键词列表:  @author 作者名  @version 版本标识  @parameter 参数及其意义  @since 最早使用该方法/类/接口的JDK版本  @return 返回值  @throws 异常类及抛出条件  @deprecated 引起不推荐使用的警告  @see reference 查看引用  @override 重写                                               JavaDoc是学习和使用Java语言最常使用的参考资料之一  如何使用JavaDoc?  例如:如何查找类String的indexOf()方法的使用?  请回答课前提出的几个问题:  1.什么是封装?  2.关键字private如何使用?  3.构造方法如何创建,又如何使用?  4.如何声明包?如何导入包?  5.包与存储Java源文件的目录结构的关系是什么?  6.如何给类的方法添加JavaDoc注释?   

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:33
  • 阅读量:184
  • 阅读量:112
  • 阅读量:65
  • 阅读量:115
  • 猜你喜欢