day10


1. 封装(Encapsulation)

1.1 封装

在面向对象程序设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装,隐藏起来的方法.

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问.

要访问该类的代码,必须通过严格的接口控制

适当的封装课以让程式代码更容易理解与维护,也加强了程式代码的安全性

1.1.1 封装的优点

  1. 良好的封装能够减少耦合
  2. 类内部的结构可以自由修改
  3. 可以对成员变量进行更精确的控制
  4. 隐藏信息,实现细节

1.1.2 封装实现步骤

public class Student{
    private String name;
    private int age;
}
//这段代码中将name和age属性设置为私有,只有本类才能访问,如此就对信息进行了隐藏
//对每个属性值提供对外的公共方式访问,也就是创建一堆赋值取值方法,用于对私有属性的访问
public class Student{
    private String name;
    private int age;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    pulbic int getAge(){
        return age;
    }
}
public class TestStudent{
    public static void main(String[] args){
        Student stu1 = new Student();
        stu1.setName("Zhao");
        //为对象stu1的name属性赋值
        stu.setAge(19);
        //为对象stu1的age属性赋值
        System.out.println(stu1.getName());
        System.out.println(stu1.getAge());

    }
}

1.1.3 封装的注意事项

  1. 不是只有private修饰才叫封装,private知识最大限度的封装
  2. get和set方法都是只能获取一个或给一个变量赋值
  3. 单一职能原则,功能最小化,不要想看一个方法写完所有功能,因为代码复用率高

1.2 this关键字

  1. this调用本类中的属性,也就是类中的成员变量
  2. this调用本类中的其他方法
  3. this调用本类中的其他构造方法,调用时要放在构造方法的首行.
  4. this指代当前对象,即哪个对象调用,就指代哪个对象
  5. this可以作为参数传递,它是一个对象,也可以作为返回值被返回.

this.方法名 用来访问本类的成员方法

this() 访问本类的构造方法()中有参数表示调用有参构造方法

this() 不能写在普通方法中,只能写在构造方法中

public class Student{
    private String name;
    private int age;
    public void setName(String name){
        this.name = name;
        //this关键字指代当前对象,即,哪个对象调用就指代哪个对象
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    pulbic int getAge(){
        return age;
    }
}
public class TestStudent{
    public static void main(String[] args){
        Student stu1 = new Student();
        stu1.setName("Zhao");
       //this关键字被stu1调用,所以setName方法中的this.name指代stu1的name属性
        stu.setAge(19);
        //为对象stu1的age属性赋值
        System.out.println(stu1.getName());
        System.out.println(stu1.getAge());

    }
}

1.3匿名对象

匿名对象就是没有名字的对象,在创建对象时,只通过new的动作在堆中开辟内存空间,却没有吧堆内存空间的地址值赋值给栈内存的某个变量用来存储.

匿名对象本质也是一个具体的值

Student stu = new Student();new Student(); 就是匿名对象

1.1.1 匿名对象使用场景

  1. 只需要使用一次的情况,使用一次即被GC机制回收

1.4对象的生命周期

开始:new Student(); 在堆中开辟内存空间

结束:当对象失去所有引用,没有变量指向它时,或JavaGC机制把对象的内存空间回收了

2. 包(package)

2.1 定义包

包命名规范:

一般是公司域名反写+项目名+模块名+子模块名

包名中必须用英文,并且小写

org.apache.common

2.2 导入包

导包的本质是导入包中的类

import 包名.子包名.类名

  1. 注意:导入包的代码应该在声明包的的后面,声明类的前面
package day10
import java.util.Arrays;
import java.util.*;
//表示导入util包中的类,只会导入util包下的直接类型,不包括util子包中的类型
public class Test{

}
  1. java.lang是核心包,下面的直接类型是自动导入的

  2. String Systemlang包的子包中的类型不会自动导入,需要手动导入

  3. 在一个类中会用到同名包不同的时候必须使用全限定路径

java.util.Datejava.sql.Date

2.2.1 java中的包

java/ javax(java增强包)
java.lang (java的核心包–基本包)
java.util(java的工具包 –集合框架ArrayList LinkedList)
java.io(java IO包input-output 读写文件)
java.net(网络编程)
java.awt/javax.swing(java的图形化界面)
java.math 数学相关的包
java.sql 数据库相关的包
java.text 是文本格式化相关的包
java.time 时间相关的包


文章作者:
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
 上一篇
day11 day11
1. 继承(extends) 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承那个类即可. 此处的多个类称为子类(派生类),单独的这个类称为父类(超类,基类) 类继承语法 clas
2020-10-25
下一篇 
day9 day9
1. 类和对象类: 类是具备某些共同特征的实体的集合,是对所具有相同特征实体的抽象,例如学生类,动物类,员工类. 对象: 对象是类的实例,简单的认为对象就是类中具体的个体. example: 动物类是一个类,而猫,狗就是动物类的对象. 类
2020-10-25
  目录