09 封装、构造器、this、包

lix_uan
• 阅读 1102

封装的概述

封装的设计思想

  • 隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性按,可维护性
  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合:仅对外暴露少量方法用于使用

封装的实现

public class Student {
  private String name;
  private int age;

  public void setName(String n) {
    name = n;
  }

  public String getName() {
    return name;
  }

  public void setAge(int a) {
    age = a;
  }

  public int getAge() {
    return age;
  }
}

权限修饰符

09 封装、构造器、this、包

构造器(Construct0r)

构造器的作用

  • 初始化实例对象,给对象的成员变量赋初始值

示例

public class Student {
    private String name;
    private int age;
    // 无参构造
      public Student() {} 
     // 有参构造
      public Student(String n,int a) {
        name = n;
        age = a; 
    }
    //此处其他代码省略
}

注意

  • Java会自动提供一个无参构造方法,一旦自己定义了构造方法,Java提供的默认无参构造方法就会失效
  • 构造器名字必须与它所在的类名相同
  • 它没有返回值,所以不需要void
  • 构造器不能被static, final, synchronized, abstracct, native修饰

this关键字

this的含义

  • this用于构造器中,表示正在创建的那个示例对象,即正在new谁,this就代表谁
  • this用于实例方法中,表示调用该方法的对象,即谁在调用,this就代表谁

标准JavaBean

public class Student {
    // 成员变量
    private String name;
    private int age;

    // 构造方法
    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // get/set成员方法
    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 String getInfo(){
        return "姓名:" + name + ",年龄:" + age;
    }
}

包的作用

  • 避免类重名
  • 分类组织管理众多的类

JDK自带的常用包

  • java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread等,提供常用功能
  • java.io ----包含能提供多种输入/输出功能的类
  • java.util----包含一些实用工具类,如集合框架类、日期时间、数组工具类Arrays,文本扫描仪Scanner,随机值产生工具Random
  • java.sql和javax.sql----包含了java进行JDBC数据库编程的相关类/接口
  • java.net----包含执行与网络相关的操作的类和接口

声明包的语法格式

package 包名;

注意

  • 必须在源文件代码的首行
  • 一个源文件只能有一个声明包的语句
  • 每个单词都小写,单词之间使用.分隔
  • 习惯使用公司域名倒置

使用其他包的类

使用类型的全名称

  • java.util.Scanner input = new java.util.Scanner(System.in);

使用import导入

import 包.类名;
import 包.*;
import static 包.类名.静态成员; 

注意

  • 使用java.lang包下的类,不需要import语句,就直接可以使用
  • import语句必须在package下面,class的上面
  • 当使用两个不同包的同名类时,例如:java.util.Date和java.sql.Date。一个使用全名称,一个使用简名称

示例

package com.atguigu.test;

import java.util.Scanner;
import java.util.Date;
import com.atguigu.bean.Student;

public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        Student stu = new Student();
        String str = "hello";

        Date now = new Date();
        java.sql.Date d = new java.sql.Date(346724566);        
    }
}
点赞
收藏
评论区
推荐文章

暂无数据

lix_uan
lix_uan
Lv1
学无止境,即刻前行
文章
7
粉丝
7
获赞
0