栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-9-27 Java学习(OOP复习-对象与类)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-9-27 Java学习(OOP复习-对象与类)

文章目录
  • 一、封装
  • 二、类之间的关系
  • 三、更改器方法vs访问器方法
  • 四、举例 Employee类的分析
    • 隐式参数(implicit)和显式参数(explicit)
    • 访问器方法
  • 五、静态字段与静态方法

内容不全,主要记录自己认为不够熟练的点

一、封装

定义:把数据和方法包装进类中,并对具体实现进行隐藏
类是基本的封装单元,一个类的所有对象实例有相同的封装特性
“具体实现” 包括:对象的数据域、方法实现以及非接口方法的定义等
对数据的完全隐藏是对象的理想结构, 现实中使用public、protected、private关键字实现4种隐藏能力(访问权限)

二、类之间的关系
  1. 依赖 uses-a
    如果一个类的方法使用或操纵另一个类的对象,我们就说一个类依赖于另一个类

  2. 聚合(包含) has-a
    类A的对象包含类B的对象

  3. 继承 is-a
    特殊类和一个一般类之间的关系

类A扩展类B,类A不但包含从类B继承的方法,还会有一些额外的功能

三、更改器方法vs访问器方法
  1. 访问器方法只访问对象而不修改对象
        LocalDate newYear=LocalDate.of(2000,1,1);
        LocalDate aThousandDaysLater=newYear.plusDays(1000);
        //不更改newYear的日期 而是将新日期返回给aThousandDaysLater变量
  1. 修改器方法显然相反~~
四、举例 Employee类的分析
import java.time.LocalDate;

public class learnClass {
    public static void main(String[] args) {
        Employee[] staff=new Employee[3];
        staff[0]=new Employee("Carl Cracker",75000,1987,12,15);
        staff[1]=new Employee("Harry Hacker",50000,1989,10,1);
        staff[2]=new Employee("Tony Tester",40000,1990,3,15);

        for(Employee e:staff)
        {
            e.raiseSalary(5);
        }

        for (Employee e:staff)
        {
            System.out.println("name:"+e.getName()+",salary:"+e.getSalary()+",hireDay:"+e.getHireDay());
        }
    }

}

class Employee
{
    private  String name;
    private  double salary;
    private LocalDate hireDay;

    public  Employee(String n,double s,int year,int month,int day)
    {
        name=n;
        salary=s;
        hireDay=LocalDate.of(year,month,day);
    }

    public String getName()
    {
        return name;
    }

    public double getSalary()
    {
        return salary;
    }

    public LocalDate getHireDay()
    {
        return hireDay;
    }

    public void raiseSalary(double byPercent)
    {
        double raise=salary*byPercent/100;
        salary+=raise;
    }
}
隐式参数(implicit)和显式参数(explicit)

上述代码的raiseSalary方法中,salary为隐式参数,也可以 写作this.salary
byPercent为显式参数,显式地列在方法声明中。

访问器方法

getName… 使得name成为一个只读字段,一旦在构造器中设置,就没有任何办法可以对它进行修改。使得salary字段只能用raiseSalary方法修改。

五、静态字段与静态方法
  1. 静态字段
    静态字段又称为类字段。

private static int nextID=1;

一个类只有一个静态字段 属于类而不属于对象(可以想象成n个对象 共享1个静态字段)

  1. 静态方法

静态方法是不在对象上执行的方法。例如,Math类的pow方法就是一个静态方法。表达式Math.pow(x,a)会计算幂。在完成运算是,它并不使用任何Math对象,换句话说,它没有隐式参数。 可以认为静态方法是没有this参数的方法。

可以使用静态方法:

  • 方法不需要访问对象状态,所有参数都通过显式参数提供
  • 方法只需要访问类的静态字段
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号