[关闭]
@liruiyi962464 2017-03-20T11:22:08.000000Z 字数 2851 阅读 477

面向对象 封装

java

访问修饰符

访问权限

  • private:由此访问修饰符修饰了的方法以及属性只能在当前类使用
  • 默认(方法或者属性不加访问修饰符);对应的方法以及属性使用的范围只能是在相同的包里使用
  • protcted:不同包里使用
  • public:访问权限最大,课题任意地方
位置 private 默认 protected public
同一个类
同一个包不同类
不同包内的子类
不同包并且不是子类

定义和使用的方式

  1. //定义了私有变量name
  2. private String name;
  3. //取值name属性的方法
  4. //this:代表当前类的对象
  5. //通过this可以对当前类的属性以及方法进行操作(赋值,调用,返回对应属性的值)
  6. //获取name的方法
  7. public String getName() {
  8. return this.name;
  9. }
  10. //给name赋值的方法
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  1. Student stu = new Student();
  2. stu.setName("张三");
  3. String name = stu.getName();
  4. System.out.println(name);

UML类图

  • “-” 私有 private(-age:int)
  • “+” 公开的 public
  • “#” 受保护 protected

构造对象

构造方法的语法规则

  • 构造方法名与类名相同
  • 没有返回值类型
  • 方法实现主要是为字段赋初始值

构造方法的调用

  • new操作符(返回新建实例的引用)
  • 强调:Java系统保证每个类都有构造方法
  1. //默认的构造方法
  2. public Student(){}
  3. //构造方法用来创建对象 (实例化对象)给属性赋值
  4. public Student(String name, int age, String sex, String stuNo){
  5. this.name = name;
  6. this.age = age;
  7. this.sex = sex;
  8. this.stuNo = stuNo;
  9. }
  1. //赋值方式1
  2. Student stu1 = new Student();
  3. stu1.setName("李云龙");
  4. stu1.setAge(105);
  5. stu1.setSex("男");
  6. stu1.setStuNo("001");
  7. stu1.showStudentMessage();
  8. //赋值方式2
  9. Student stu2 = new Student("意大利炮",18,"男","9527");
  10. stu2.showStudentMessage();

this关键子

  • this:代表当前类的对象
  • 通过this可以对当前类的属性以及方法进行操作(赋值,调用,返回对应属性的值)

static关键字

  • 1.static 用来修饰累的成员(属性和方法)
  • 2.由static修饰的方法又称之为静态方法,由static修饰的属性称之为静态变量
  • 3.注意;(1)静态方法中不能使用this关键字
  • (2)静态方法中只能访问外部中的静态变量
  • 4.有static关键字修饰的成员的使用
  • 静态属性:类名.静态属性名称
  • 静态方法:类名.静态方法名称
  • 5.静态变量称之为共享变量,也就是一次创建
  1. public static String name;//静态变量
  2. public int age;//属性称之为,全局变量(作用于整个类)
  3. public static void showTeacherMessage(){//定义了一个静态方法
  4. System.out.println("姓名:"+name);
  5. //System.out.println("年龄:"+age);//只能访问静态变量
  6. }
  7. //但是静态变量可以给普通方法使用
  8. public void showMessage(){
  9. System.out.println("姓名:"+name);
  10. System.out.println("年龄:"+age);
  11. //System.out.println("年龄:"+age);//只能访问静态变量
  12. }
  1. //给静态属性赋值
  2. Teacher.name = "王五";
  3. //调用静态
  4. Teacher.showTeacherMessage();
  5. Teacher tea1 = new Teacher();
  6. //共享变量
  7. tea1.name="张三";
  8. tea1.age=18;
  9. Teacher tea2 = new Teacher();
  10. tea2.name="赵四";
  11. tea2.age=19;
  12. Teacher tea3 = new Teacher();
  13. tea3.name="二柱";
  14. tea3.age=20;
  15. tea1.showMessage();
  16. tea2.showMessage();
  17. tea3.showMessage();

方法重载

  • 方法名字一样参数列表不同的多个方法我们称之为方法重载
  • 与返回值无关
  • 构造方法是方法 所以也能重载
  • 方法签名:方法名+参数列表
  • 重载:方法签名不一样,具体就是数据参数列表不一样
  • 调用的时候根据传入的参数来决定调用哪个方法
  1. String name;
  2. String sex;
  3. int age;
  4. String stuNo;
  5. public void showMessage(String name){
  6. this.name = name;
  7. System.out.println("姓名:"+this.name);
  8. }
  9. public void showMessage(String name,String sex){
  10. this.name = name;
  11. this.sex = sex;
  12. System.out.println("姓名:"+this.name);
  13. System.out.println("性别:"+this.sex);
  14. }
  15. public void showMessage(String name,String sex,int age){
  16. this.name = name;
  17. this.sex = sex;
  18. this.age = age;
  19. System.out.println("姓名:"+this.name);
  20. System.out.println("性别:"+this.sex);
  21. System.out.println("年龄:"+this.sex);
  22. }
  23. public void showMessage(String name,String sex,int age, String stuNo){
  24. this.name = name;
  25. this.sex = sex;
  26. this.age = age;
  27. this.stuNo = stuNo;
  28. System.out.println("姓名:"+this.name);
  29. System.out.println("性别:"+this.sex);
  30. System.out.println("年龄:"+this.sex);
  31. System.out.println("学号:"+this.stuNo);
  32. }
  1. Method mt = new Method();
  2. mt.showMessage("张三");
  3. mt.showMessage("张三","男");
  4. mt.showMessage("张三","男",20);
  5. mt.showMessage("张三","男",20,"9527");
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注